Δευτέρα 2 Νοεμβρίου 2015

Γραφικά με πολικές συντεταγμένες

Παράδειγμα με δυο τμήματα.
Το πρόγραμμα βγάζει τρεις κύκλους με εγγεγραμμένα κανονικά πολύγωνα τα οποία περιστρέφει και μπορούμε να τα μετακινήσουμε με το δείκτη (ποντίκι). Αν πατήσουμε ένα πλήκτρο σταματάει το πρόγραμμα. Χρησιμοποιούμε τη Θέσε Γρήγορα ! που κάνει πιο γρήγορο το πρόγραμμα (επανέρχεται με Θέσε Γρήγορα δηλαδή χωρίς θαυμαστικό)

Το πρόγραμμα σώθηκε με την εντολή Σώσε πολυγωνο
και αντιγράφτηκε ανοίγοντάς το με μια εντολή σ "πολυγωνο.gsb" η οποία όταν παίρνει αλφαριθμητικό ανοίγει το αρχείο και όχι ένα τμήμα όπως κάνει με τα αναγνωριστικά!
Από εκεί με επιλογή όλων ctrl+A και αντιγραφή crtl+C το πήρα και το έφερα εδώ.

Λίγα λόγια για τα μαθηματικά του προγράμματος.
Όπου αναφερόμαστε σε γωνία λέμε για απόλυτη γωνία. Η εντολή θέση μετακινεί το δρομέα σε απόλυτη θέση. Η Χάραξε Γωνία και η Βήμα Γωνία παίρνουν απόλυτη γωνία και απόσταση. Απόλυτη γωνία σημαίνει όχι σχετική, όχι δηλαδή σε σχέση με κάποια "πορεία". Έτσι το πι/4 δεν σημαίνει στρίβω ενενήντα μοίρες αλλά βάζω πορεία ενενήντα μοίρες. Η απόσταση αν είναι αρνητική χαράζουμε ή πάμε (με το βήμα) απόσταση προς τα πίσω άρα στην αντίθετη πορεία. Πρόσημο στη γωνία σημαίνει να την λογαριάζουμε δεξιόστροφη. Το -πι/4 σημαίνει πι*3/4
Για να βρούμε το μέγεθος της πλευράς του εγγεγραμμένου πολύγωνου, αντί να κάνουμε υπολογισμό, παίρνουμε με μια μετακίνηση τον υπολογισμό που κάνει το σύστημα, και διαβάζουμε την θέση και αφαιρούμε για να βρούμε το πλάτος!

εδώ πάμε  στη θέση που ξεκινάει το τετράγωνο (ν=4, α ακτίνα)   βήμα γωνια -(πι/2+πι/ν),α
Εδώ παίρνουμε τη θέση και αφαιρούμε από τη θέση του κέντρου και πολλαπλασιάζουμε επί 2
β=(Χ-θεση.Χ)*2
Τέλος ξαναγυρνάμε εκεί που ήμασταν:       βήμα γωνια -(πι/2+πι/ν),-α
θα μπορούσε να ήταν θέσε Χ, Υ (το άφησα για να το καταλάβουμε)

Μπορούμε να ανοίξουμε τη Μ2000 να γράψουμε Σύστημα Κατ$ και θα ανοίξει ο φάκελος που γράφουμε τα προγράμματά μας. Εκεί μπορεί κανείς να δημιουργήσει ένα κείμενο, να αντιγράψει το πρόγραμμα παρακάτω και να το σώσει ως πολυγωνο.gsb
Γυρνάμε στη Μ2000  γράφουμε φόρτωσε πολύγωνο, β και έτσι να φορτωθεί και να τρέξει το τμήμα β
Αν δεν θέλουμε να γράφουμε το β μπορούμε στο κείμενο παρακάτω να προσθέσουμε μια γραμμή με το γράμμα β οπότε με το φόρτωμα θα τρέξει το β

(προστέθηκε η στρογγυλοποίηση για ι=0 εως στρογγ(2*πι-πι/γ) ανα πι/γ     χωρίς παράμετρο κάνει αποκοπή από το δεκατοτρίτο δεκαδικό) Στην αναθεώρηση 123 μπήκε εξ ορισμού στις αρχικές και τελικές τιμές στις Για { }.
Προστέθηκαν και μερικά μπλοκ Πάχος για να δούμε ότι δουλεύουν φωλιασμένα οπότε αλλάζουμε μαζικά το πάχος κάθε φορά και στο τέλος του μπλοκ επανέρχεται η προηγούμενη τιμή του.
(αυτό μπορεί να γίνει και με την Πένα π.χ. Πένα 13 {  } ή  Πένα #FF33AA {   }



Αν από την γραμμή εισαγωγής εντολών (CLI) της M2000 δώσουμε την εντολή monitor, εκτός από άλλες πληροφορίες θα δούμε και μια σειρά διακοπτών (έχουν τρια γράμματα ο καθένας και προηγείται το - ή το + που δηλώνει την κατάστασή του). Αν έχουμε -RDB τότε δεν γίνεται στρογγυλοποίηση σε εκφράσεις με διπλής ακρίβειας αριθμούς. Επειδή στην 10η έκδοση ισχύει αυτό, όταν φτιάχνονται τα πολύγωνα δεν χαράζεται η τελευταία τους πλευρά. Με την εντολή μέσα σε τμήμα της ΘΕΣΕ ΔΙΑΚΟΠΤΕΣ "+RDB" (σε μια γραμμή ωρίς να ακολουθούν εντολές στη γραμμή)  αλλάζουμε το διακόπτη και έτσι έχουμε στρογγυλοποίηση και βγαίνει και η τελευταία πλευρά του πωλυγώνου. Διαφορετικά πρέπει να βγάλουμε στο τμήμα Α  στη εντολή  για ι=0 εως 2*πι-πι/γ ανα πι/γ  το παράγοντα  -πι/γ  και να έχουμε  για ι=0 εως 2*πι ανα πι/γ 


ΤΜΗΜΑ Α {διαβασε α, μ1,μ2, Χ, Ψ, ζ, τρικ
θεση Χ, Ψ
κυκλος α
παχος 1,3 { ' άξονες
      βημα γωνια ζ, -α*1.05
      χαραξε γωνια ζ , α*2.1
      θεση Χ, Ψ
      βημα γωνια ζ+πι/2,-α*1.05
      χαραξε γωνια ζ+πι/2,α*2.1
}
για ν=μ1 εως μ2 { ' φτιάχνει πολύγωνα
      θεση Χ,Ψ
      γ=ν/2
      βήμα γωνια -(πι/2+πι/ν),α
      β=(Χ-θεση.Χ)*2
      βήμα γωνια -(πι/2+πι/ν),-α
      βήμα γωνια -(πι/2+πι/ν)+ζ,α
      βημα γωνια 0,0
      ο=2
      για ι=0 εως 2*πι-πι/γ ανα πι/γ {
            αν τρικ τοτε {
                  \\ βάζει άξονες επιπλέον!
                  Πάχος 1 {
                  βημα γωνια ι+πι/2+ζ,α
                  χαραξε γωνια ι+πι/2+ζ,-α
                  βημα γωνια ι+πι/2-πι/γ+ζ,α
                  χαραξε γωνια ι+πι/2-πι/γ+ζ,-α
                  }
            }
            χαραξε γωνια ι+ζ, β, ο
            ο++
      }
}
}
ΤΜΗΜΑ Β {θεσε γρηγορα !
ζβ=πι/32
ζ=ζβ
κχ=δεικτης.χ
κυ=δεικτης.υ
ανανεωση 2000
διπλα
καθε 40 {
      αν δεικτης τοτε {
            κχ=δεικτης.χ
            κυ=δεικτης.υ
      }
      φοντο 1,6
      δρομεας 0,0
      πλαγια
      αναφορα 2,"Παράδειγμα Χρήσης Πολικών Συντεταγμένων"
      πλαγια
      Πάχος 4 {
            α 4000,3,4,κχ,κυ, ζ, 0
            α 2000,4,5,θέση.χ,θέση.υ,0, 0
            θεση κχ, κυ
            βήμα γωνια (πι/2+πι/4)+ζ,4000
            α 2000,5,5,θέση.χ,θέση.υ,ζ, 1
      }
      ανανεωση 1000
      αν ενκομ$<>"" τοτε εξοδος
      ζ+=ζβ
}
κανονικα
}





Παραλλαγή, με δυο ακόμα "δορυφόρους"!
ΤΜΗΜΑ Α {διαβασε α, μ1,μ2, Χ, Ψ, ζ, τρικ
θεση Χ, Ψ
κυκλος α
παχος 1,3 { ' άξονες
      βημα γωνια ζ, -α*1.05
      χαραξε γωνια ζ , α*2.1
      θεση Χ, Ψ
      βημα γωνια ζ+πι/2,-α*1.05
      χαραξε γωνια ζ+πι/2,α*2.1
}
για ν=μ1 εως μ2 { ' φτιάχνει πολύγωνα
      θεση Χ,Ψ
      γ=ν/2
      κ=200/γ
      βήμα γωνια -(πι/2+πι/ν),α
      β=(Χ-θεση.Χ)*2
      βήμα γωνια -(πι/2+πι/ν),-α
      βήμα γωνια -(πι/2+πι/ν)+ζ,α
      βημα γωνια 0,0

      για ι=0 εως 2*πι-πι/γ ανα πι/γ {
            αν τρικ τοτε {
                  \\ βάζει άξονες επιπλέον!
                  βημα γωνια ι+πι/2+ζ,α
                  χαραξε γωνια ι+πι/2+ζ,-α
                  βημα γωνια ι+πι/2-πι/γ+ζ,α
                  χαραξε γωνια ι+πι/2-πι/γ+ζ,-α
            }
            χαραξε γωνια ι+ζ, β
      }
}
}
ΤΜΗΜΑ Β {θεσε γρηγορα !
ζβ=πι/32
ζ=ζβ
κχ=δεικτης.χ
κυ=δεικτης.υ
ανανεωση 100
διπλα
καθε 5 {
      αν δεικτης τοτε {
            κχ=δεικτης.χ
            κυ=δεικτης.υ
      }
      φοντο 1,6
      δρομεας 0,0
      πλαγια
      αναφορα 2,"Παράδειγμα Χρήσης Πολικών Συντεταγμένων"
      πλαγια
      α 4000,8,8,κχ,κυ, ζ, 0
      α 2000,5,5,θέση.χ,θέση.υ,0, 1
      θεση κχ, κυ
      βήμα γωνια (πι/2+πι/4)+ζ,4000
      α 2000,5,5,θέση.χ,θέση.υ,ζ, 0
            θεση κχ, κυ
      βήμα γωνια (πι/2-πι/4)+ζ/.2,4000
      α 1000,5,5,θέση.χ,θέση.υ,-ζ/3, 0
       θεση κχ, κυ
      βήμα γωνια (-πι/4)+ζ/4,3000
      α 1000,5,5,θέση.χ,θέση.υ,ζ/.4, 0
      ανανεωση 1000
      αν ενκομ$<>"" τοτε εξοδος
      ζ+=ζβ
}
κανονικα

}

Αν θέλουμε να βάλουμε το πρόγραμμα σε ένα τμήμα τότε το α επειδή το καλεί το β πρέπει να το ορίσουμε ως Γενικό: (έχω αφαιρέσει τις εντολές). Το όνομα του τμήματος που θα το βάλουμε πρέπει να μην λέγεται Β αφού η κλήση στο τέλος θα είναι σαν αναδρομική, και αναδρομική σε τμήματα δεν επιτρέπει το σύστημα.

Τμήμα Γενικό Α {
}
Τμήμα Β {
}
Β

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.