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

Πιο πολύπλοκα γραφικά και Animation!



Η ιδέα είναι από εδώ:


Αυτό το πρόγραμμα σχετίζεται με τη προηγούμενη ανάρτηση. Είναι αντιγραφή από ένα Gif που κυκλοφορούσε στο FaceBook.
Η δυσκολία του εγχειρήματος είναι στο ότι δεν υπάρχει στη Μ2000 έλλειψη με γωνία αλλιώς θα ήταν εύκολα τα πράγματα. Εδώ λοιπόν πρέπει να γυρίζει ο εσωτερικός κύκλος και να γράφει τέσσερις ελλείψεις. Για να γίνει αυτό πρέπει εκτός του κανονικού δρομέα που σχεδιάζουμε να έχουμε άλλους τέσσερις. Ώστε καθένας από τους τέσσερις να γράφει στο δικό του χρώμα και τη δική του έλλειψη (καμπύλη βασικά). Οπότε εδώ έχουμε 4 τμήματα, το βασικό ως Α, το Γ που γράφει το σταθερό κύκλο μια φορά όμως και σώνουμε την οθόνη προσωρινά (με μια εντολή ΚΡΑΤΗΣΕ), και μετά μπαίνουμε στο βρόγχο που εκτελείται κάθε 40 χιλιοστά του δευτερολέπτου. Σε αυτόν λοιπόν πρέπει να σχεδιάζουμε με τέσσερις δρομείς γραφικών τις καμπύλες. Επειδή την πρώτη φορά δεν θα έχουμε από που να τυπώσουμε απλά θα συγκεντρώσουμε τα τέσσερα ζευγάρια στον σωρό τιμών (τον έχουμε αδειάσει με την ΑΔΕΙΑΣΕ αλλά θα μπορούσαμε να κάναμε έναν νέο έξω από τη Κάθε..π.χ. ΣΩΡΟΣ ΝΕΟΣ {   ΚΑΘΕ ... } }.. Από την δεύτερη φορά έχουμε ένα σετ συντεταγμένων και βάζουμε στο σωρό στο τέλος άλλο ένα, μετά διαβάζουμε ένα ζευγάρι βγάζοντάς το από το σωρό και διαβάζουμε ένα ζευγάρι από την 7η και 8η θέση πάντα. που είναι ο τερματισμός της χάραξε εως..Δεν σηκώνουμε το πρόσφατο σετ γιατί θα το σηκώσουμε την άλλη φορά όταν θα γράψουμε τα επόμενα. Ουσιαστικά έχουμε μια κυκλική λίστα όπου το κάθε σετ τεσσάρων δρομέων ξεκινάει στο βάθος, έρχεται στην αρχή και "πετιέται" και συνεχίζουμε έτσι μέχρι να τελειώσει το πρόγραμμα

Όταν πατήσουμε με ένα πλήκτρο, τότε το πρόγραμμα θα αδειάσει ότι άφησε...στο σωρό!


ΤΜΗΜΑ Α {θεσε γρηγορα !
ζβ=πι/32 \\ αν βάλουμε 48 κάνει πιο ωραία καμπύλη
ζβ1=ζβ/2 \\ αν βάλουμε αντί για 2 μεγαλύτερο θα δούμε άλλα σχέδια
ζ=πι+ζβ*8
ζ1=ζβ1*16
\\ στο μέσον!
κχ=χ.σημεια/2
κυ=υ.σημεια/2
ανανεωση 2000 \\ για να μην εμφανίσει αλλαγές της οθόνης, εκτός αν θέλουμε!
διπλα
φοντο 1,5
δρομεας 0,0
αναφορα 2,"Παράδειγμα Χρήσης Γραφικών με τη Μ2000"
κανονικα
γ 4000,κχ,κυ,πι/4
Άδειασε  ' αδειάζει το σωρό
κκ=ψευδες
κρατησε   \\ σώνουμε προσωρινά την εικόνα
πάχος 2 { \\ βάζουμε πάχος στις γραμμές μας
      καθε 20 {
            αφησε  \\ αντί να σβήσουμε βάζουμε ότι έχουμε σταθερό
            θεση κχ, κυ
            βήμα γωνια (πι/2+πι/4)+ζ,2000 \\ η θέση του εσωτερικού κύκλου
            κ 2000,θέση.χ, θέση.υ, -ζ1, &κκ \\ την πρώτη φορά απλά παίρνει τα σημεία
            \\ η κ κάθε άλλη φορά θα σώνει την οθόνη χωρίς τον εσωτερικό κύκλο
            δ 2000,θέση.χ,θέση.υ,-ζ1, 1 \\ τυπώνει το κύκλο
            \\ με την ανανέωση εμφανίζουμε τις αλλαγές
            ανανεωση 1000
            αν ενκομ$<>"" τοτε εξοδος
            ζ+=ζβ
            ζ1+=ζβ1*2
      }
}
Αδειασε

}
ΤΜΗΜΑ Κ {διαβασε α, Χ, Ψ, ζ, &σχεδιασε
      θεση Χ, Ψ
            βημα γωνια ζ+πι/4, -α*2
                  \\ η εντολή Βάλε βάζει στη κορυφή ενώ η εντολή Σειρά βάζει στο τέλος
                  \\ όμως θα κάνει συγχώνευση και έτσι το Θέση.υ θα πάει στο τέλος.
                  \\ Αντίθετα η Βάλε βάζει όποιο διαβάζει στην κορυφή
                  Σειρά θέση.χ, θεση.υ
            βημα γωνια ζ+πι/4 , α*4
                  Σειρά θέση.χ, θεση.υ
      θεση Χ, Ψ
            βημα γωνια ζ-πι/4,-α*2
                  Σειρά θέση.χ, θεση.υ
            βημα γωνια ζ-πι/4,α*4
                  Σειρά θέση.χ, θεση.υ
  \\ η εντολή σειρά βάζει στο σωρό από το τέλος, κάνει το σωρό FIFO
Αν σχεδίασε τοτε {
      για ι=1 εως 4 {
                  θεση αριθμός, αριθμός
                  πάνω 8
                  πανω 8


                  χαραξε εως αριθμός, αριθμός, ι+8
      }
}
σχεδιασε=αληθης
κράτησε \\ σωνει την οθόνη
θεση Χ,Ψ
}
ΤΜΗΜΑ Γ {διαβασε α, Χ, Ψ, ζ
θεση Χ, Ψ
κυκλος α
κυκλος α/2,1,7
παχος 1,3 { ' άξονες - δεν μπροούμε να δώσουμε με πάχος άλλο από ένα.
      βημα γωνια ζ+πι/4, -α*1.05
      χαραξε γωνια ζ+πι/4 , α*2.1
      θεση Χ, Ψ
      βημα γωνια ζ-πι/4,-α*1.05
      χαραξε γωνια ζ-πι/4,α*2.1
}
}
ΤΜΗΜΑ Δ {διαβασε α, Χ, Ψ, ζ, τρικ
παχος 1,3 { ' άξονες  -- ενώ απ' έξω έχουμε αλλάξει το πάχος σε 2
      βημα γωνια ζ+πι/4, -α
                  κυκλος α/16
            βημα γωνια ζ+πι/4, -α
                         κυκλος α/16
      χαραξε γωνια ζ+πι/4 , α*3
            κυκλος α/16
                  χαραξε γωνια ζ+πι/4 , α
                              κυκλος α/16
      θεση Χ, Ψ
      βημα γωνια ζ-πι/4,-α*2
                  κυκλος α/16
      χαραξε γωνια ζ-πι/4,α*4
            κυκλος α/16
}
θεση Χ, Ψ
κυκλος α
}

Οι παρακάτω εντολές αντικαταστάθηκαν από το αρχικό για απλοποίηση (από το τμήμα κ):
                  διάβασε χ1, ψ1
                  θεση χ1, ψ1
                  \\ η χαραξε εως παίρνει απόλυτες τιμές
                  \\ τον σωρό μπορούμε να τον προσπελάσουμε σαν πίνακα!
                  \\ αλλά ξεκινάει από το 1 (η κορυφή)
                  χαραξε εως τιμησωρου(7), τιμησωρου(8), ι+8


με αυτές (κάνουν το ίδιο πράγμα)
                  θεση αριθμός, αριθμός
                  πάνω 8
                  πανω 8

                  χαραξε εως αριθμός, αριθμός, ι+8
Και η εξήγηση είναι απλή:

Η αριθμός παίρνει την κορυφή, όταν πάρουμε τις δυο κορυφές θα βγάλουμε από την 8η θέση μια φορά το νούμερο και θα το φέρουμε στην κορυφή ως αντίγραφο (η Πάνω βγάζει αντίγραφο), άρα η 7η τιμή θα γίνει όγδοη, οπότε την φέρνουμε και αυτήν στη κορυφή. Έτσι δεν χρειάζεται να φτιάξουμε μεταβλητές! Ο σωρός στην Μ2000 είναι ειδική στοίβα με συνδεδεμένα στοιχεία. Έτσι το να βγάλει ένα είναι μια άμεση ενέργεια!  Η πάνω αντιγράφει οτιδήποτε. Χωρίς αριθμό βγάζει ένα αντίγραφο της κορυφής! Ισοδυναμεί με το Πάνω 1. Αν θέλουμε μετακινούμε στοιχεία από και προς την κορυφή με την ΦΕΡΕ και την ΦΕΡΕΠΙΣΩ. Η Βάλε βάζει στην κορυφή ενώ η Σειρά συγχωνεύει τα στοιχεία της στο τέλος (το τελευταίο της στοιχείο θα είναι στο τέλος της σειράς, ενώ το πρώτο της στοιχείο θα γίνει το πρώτο μετά το τέλος του σωρού πριν την συγχώνευση. Με την Διάβασε διαβάζουμε μια σειρά από τιμές. Όταν καλούμε ένα τμήμα τότε η σειρά παραμέτρων μπαίνει με συγχώνευση όπως η σειρά με τη διαφορά ότι η σειρά μπαίνει στην αρχή, με πρώτο στοιχείο την πρώτη παράμετρο από το αριστερά! Όταν καλούμε μια συνάρτηση ξεκινάμε με νέο σωρό οπότε η παράθεση στο σωρό αντιστοιχεί με την εντολή Σειρά. Η Άδειασε αδειάζει το σωρό και υπάρχουν και εντολές να δούμε το μήκος το και το τι έχει, τον τύπο των στοιχείων.



Αν αλλάξουμε
το ζβ1=ζβ/2  το 2 στο 23 για παράδειγμα

Εδώ έχουμε επιλέξει Πάχος 2 { } στο τμήμα Δ και έτσι βγάλαμε τις αξονικές γραμμές και βάλαμε διπλού πάχους!


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

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

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