Δημιουργία Κορυφών και Διαδρόμων - GauravMall/Customer-Assistant-Map-Creator GitHub Wiki

Η εφαρμογή αυτή θα λειτουργεί με ένα πολύ απλό τρόπο ώστε οποιοσδήποτε μπορεί να τη χρησιμοποιεί, όμως οι διαδικασίες που θα γίνονται στο εσωτερικό θα είναι πολύ περίπλοκες. Ας αρχίσουμε τότε. Στην αρχική κατάσταση το πρόγραμμα θα φαίνεται έτσι:

Main Window

Επειδή είναι ευκολότερο να έχω το πρόγραμμά μου στα αγγλικά, γιατί έτσι με βοηθάει και στον προγραμματισμό, αποφάσισα να μην το δημιουργήσω με βάση τα ελληνικά. Άρα, όπως βλέπουμε έχουμε ένα TreeView εδώ, το οποίο περιέχει δύο είδη:

  • Vertices (δηλαδή κορυφές) είναι τα σημεία που θα αποθηκεύσει ο χρήστης και εδώ θα υπάρχουν τα σημεία των διαδρόμων που όπως ξέρουμε είναι ευθύγραμμα τμήματα.
  • Connections (μεταφορικά οι διάδρομοι) είναι τα ευθύγραμμα τμήματα που θα έχει το ρομπότ ώστε να οδηγεί τον εαυτό του μέσα από τους διαδρόμους.

Επίσης, έχει και στην δεξιά πλευρά κάποια buttons και combo-boxes. Αυτά χρησιμεύουν στο να φτιάξουμε και να αποθηκεύσουμε τις κορυφές, στο να δημιουργήσουμε τους διαδρόμους, να δούμε τον χάρτη (με το "Preview") και επιτέλους να εξάγουμε τον χάρτη από την εφαρμογή.

Δημιουργία Κορυφών

Για να δημιουργήσουμε τις κορυφές υπάρχει όπως βλέπουμε υπάρχει το "+" κάτω από το "Vertices". Αν το πατήσουμε θα έρθει μπροστά μας ένα νέο παράθυρο:

Add Vertex Window

Σύστημα

Οι κορυφές που θα δημιουργούνται θα αποθηκεύονται μαζί με τις συντενταγμένες τους στο καρτεσιανό επίπεδο (x, y). Έτσι, ο χρήστης μπορεί με αρχή το startingVertex(0, 0) να προσθέσει και άλλα σημεία δίνοντας απλά το (x, y) του σημείου. Cartesian Coordinates

Φυσικά, όμως, για να είναι ακριβής οι μετρήσεις και για να μπορεί το ρομπότ να οδηγεί στην πραγματικότητα χρειάζεται να δίνουμε τις διαστάσεις ενός σημείου σε σχέση με ένα άλλο σημείο. Αν ο χρήστης ξέρει με ακρίβεια τις συντεταγμένες του σημείου που θα αποθηκεύσει του δίνεται η δυνατότητα να το κάνει. Αν όχι, τότε έχει αυτήν την επιλογή:

Define distance between two vertices

Με αυτήν την επιλογή μπορεί να επιλέξει ένα σημείο, να πει την γωνία που βρίσκεται το σημείο που θέλει να αποθηκεύσει σε σχέση με το σημείο που έχει επιλέξει και την απόσταση ανάμεσά τους. Είναι δηλαδή ακριβώς το ίδιο με το Πολικό Σύστημα Συντεταγμένων: Polar Coordinate System

Μετατρέποντας αυτές τις συντεταγμένες σε συντεταγμένες του καρτεσιανού συστήματος μπορούμε με επιτυχία να αποθηκεύσουμε οποιοδήποτε σημείο θέλουμε με οποιοδήποτε τρόπο θέλουμε. Ο τρόπος που μετατρέπουμε αυτές τις συντεταγμένες είναι ο εξής:

Έστω r είναι η απόσταση, φ είναι η γωνία και V είναι το σημείο που επέλεξε. Τότε υπάρχουν δύο τρόποι να βρούμε τις συντεταγμένες του σημείου στο καρτεσιανό επίπεδο. Εγώ θα παρουσιάσω τον πιο εύκολο τώρα.

Polar to Cartesian

Χρησιμοποιώντας τριγωνομετρία μπορούμε εύκολα να μετατρέψουμε τις συντεταγμένες του πολικού συστήματος σε καρτεσιανό. Αν το σημείο που θέλει να αποθηκεύσει είναι το V2(x, y) και δίνονται όλα τα παραπάνω, τότε το x = cos φ * r και y = sin φ * r. Έχοντας βρεί αυτές τις συντεταγμένες μπορούμε να αποθηκεύσουμε το σημείο.

Δημιουργία Διαδρόμων

Τώρα που έχουμε τα σημεία μπορούμε να συγκεντρωθούμε στους διαδρόμους τους οποίους μπορούμε να δημιουργούμε εδώ:

Connections

Εδώ στο πρώτο combo box επιλέγουμε το πρώτο σημείο του διαδρόμου και στο δεύτερο το δεύτερο σημείο του διαδρόμου, καθώς από δύο σημεία διέρχεται μόνο μια ευθεία ή, σε αυτήν την περίπτωση, ευθύγραμμο τμήμα. Στο είδος "Connections" αποθηκεύονται οι δύο κορυφές, όπως απεικονίζεται εδώ:

Main Window Last State