Η καμπύλη Γκόσπερ, που πήρε το όνομά της από τον Μπιλ Γκόσπερ και είναι επίσης γνωστή ως καμπύλη Πέανο-Γκόσπερ[1], πρόκειται για μια καμπύλη που γεμίζει το χώρο και της οποίας το οριακό σύνολο είναι το rep-7[2]. Είναι μια καμπύλη φράκταλ που μοιάζει στην κατασκευή με την καμπύλη δράκου και την καμπύλη Χίλμπερτ.
Η καμπύλη Γκόσπερ μπορεί επίσης να χρησιμοποιηθεί για ιεραρχική εξαγωνική ομαδοποίηση και ευρετηρίαση[3].
Αλγόριθμος
Σύστημα Λιντενμάγιερ
Η καμπύλη Γκόσπερ μπορεί να αναπαρασταθεί χρησιμοποιώντας ένα L-σύστημα με κανόνες ως εξής:
Γωνία: 60°
Αξίωμα:
Κανόνες αντικατάστασης:
Σε αυτή την περίπτωση τόσο το Α όσο και το Β σημαίνουν ότι κινούμαστε προς τα εμπρός, το + σημαίνει ότι στρίβουμε αριστερά 60 μοίρες και το - σημαίνει ότι στρίβουμε δεξιά 60 μοίρες - χρησιμοποιώντας ένα πρόγραμμα τύπου "χελώνας" όπως η Γλώσσα προγραμματισμού Logo.
Logo
Ένα πρόγραμμα Logo για τη σχεδίαση της καμπύλης Γκόσπερ με τη χρήση turtle graphics[4]:
Το πρόγραμμα μπορεί να ενεργοποιηθεί, για παράδειγμα, με την εντολή rg 4 300, ή εναλλακτικά gl 4 300.
Python
Ένα πρόγραμμα σε γλώσσα προγραμματισμούPython, το οποίο χρησιμοποιεί τους προαναφερθέντες κανόνες του συστήματος L, για να σχεδιάσει την καμπύλη Γκόσπερ χρησιμοποιώντας γραφικά χελώνας (online έκδοση):
importturtledefgosper_curve(order:int,size:int,is_A:bool=True)->None:"""Draw the Gosper curve."""iforder==0:turtle.forward(size)returnforopin"A-B--B+A++AA+B-"ifis_Aelse"+A-BB--B-A++A+B":gosper_op_map[op](order-1,size)gosper_op_map={"A":lambdao,size:gosper_curve(o,size,True),"B":lambdao,size:gosper_curve(o,size,False),"-":lambdao,size:turtle.right(60),"+":lambdao,size:turtle.left(60),}size=10order=3gosper_curve(order,size)
Ιδιότητες
Ο χώρος που γεμίζει η καμπύλη ονομάζεται νησί Γκόσπερ[5]. Οι πρώτες επαναλήψεις του φαίνονται παρακάτω:
Το νησί Γκόσπερ[5] μπορεί να επικαλύψει την επιφάνεια. Στην πραγματικότητα, επτά αντίγραφα του νησιού Γκόσπερ μπορούν να ενωθούν για να σχηματίσουν ένα σχήμα που είναι ομοειδές, αλλά αναβαθμισμένο κατά έναν παράγοντα √7 σε όλες τις διαστάσεις. Όπως φαίνεται από το παρακάτω διάγραμμα, η εκτέλεση αυτής της πράξης με μια ενδιάμεση επανάληψη του νησιού οδηγεί σε μια αναβαθμισμένη έκδοση της επόμενης επανάληψης. Η επ' αόριστον επανάληψη αυτής της διαδικασίας παράγει μια ψηφιδωτή απεικόνιση του επιπέδου. Η ίδια η καμπύλη μπορεί ομοίως να επεκταθεί σε μια άπειρη καμπύλη που γεμίζει ολόκληρο το επίπεδο.[6]