[alogo] Εξαγωνική σπιροειδής τοποθέτηση πλακιδίων

Αλγόριθμος για την τοποθέτηση (πλακιδίων) M κανονικών-εξαγώνων με ένα σπειροειδή τρόπο γύρω από το πρώτο πλακίδιο, το οποίο λειτουργεί ως πρωτότυπο για την παράθεση.
0) M = 1, αντιστοιχεί στο πρωτότυπο, που τοποθετείται με το κέντρο βάρους του στο (0,0).
1) Τα υπόλοιπα πλακίδια τοποθετούνται σε στρώσεις γύρω από το πρώτο. Κάθε στρώση περιέχει 1*6 (η πρώτη), 2*6, 3*6, κλπ.
2) Για να βρεθεί η θέση του M-ου πλακιδίου, προσδιορίζουμε τον μικρότερο ακέραιο n, τέτοιο ώστε M <= 1+3*n*(n+1).
3) Αυτό το n προσδιορίζει την στρώση στην οποία περιέχεται το πλακίδιο: n =ceiling( (sqrt( (4*M-1)/3)-1)/2).
4) ceiling( double x ) είναι η συνάρτηση που επιστρέφει τον μικρότερο ακέραιο μεγαλύτερο του x.
5) Έχοντας το n, υπολογίζεται το M1 = M-(1+3*n*(n-1)), το οποίο δίνει τον αριθμό των πλακιδίων που προηγούνται από το M-ο πλακίδιο στην παρούσα στρώση.
6) q = M1/n και r = (M1 % n) ( το πηλίκο και το υπόλοιπο της διαίρεσης του M1 με το n), προσδιορίζουν την ακριβή θέση του πλακιδίου στην στρώση.


[0_0] [0_1]


Κάθε πλακίδιο έπεται από το προηγούμενο του μέσω του βασικού διανύσματος-μεταφοράς Χ ή μιας περιστροφής του Χ κατά μια γωνία φ, η οποία είναι πολλαπλάσιο του π/3.

Ο προηγούμενος αλγόριθμος βρίσκει την θέση του Μ-ου πλακιδίου, σε μια επίστρωση του επιπέδου, η οποία ακολουθεί μια σπειροειδή κατασκευή. Αυτός ο αλγόριθμος χρησιμοποιείται στο σκριπτ Εργαλείου-Χρήστη [Tiling_Spiral_Hexagon.txt].


Produced with EucliDraw©