Στα μαθηματικά, η Μορφοκλασματική καμπύλη Λεβί είναι μια αυτοομοιόμορφη καμπύλη φράκταλ που περιγράφηκε για πρώτη φορά και της οποίας οι ιδιότητες διαφοροποίησης αναλύθηκαν από τον Ερνέστο Τσεζάρο το 1906 και τον Γκέοργκ Φάμπερ το 1910, αλλά η οποία τώρα φέρει το όνομα του Γάλλου μαθηματικού Πολ Λεβί, ο οποίος ήταν ο πρώτος που περιέγραψε τις ιδιότητες αυτοομοιομορφίας της και παρείχε μια γεωμετρική κατασκευή που την παρουσιάζει ως αντιπροσωπευτική καμπύλη της ίδιας κατηγορίας με την καμπύλη Κοχ. Πρόκειται για μια ειδική περίπτωση καμπύλης διπλής περιόδου, μια καμπύλη του Ντε Ραμ (de Rham).
Ιδιότητες
Η διάσταση Χάουσντορφ της καμπύλης Λέβι είναι ίση με 2 (περιέχει ανοιχτά σύνολα). Αυτό το αποτέλεσμα μπορεί να συναχθεί απευθείας από την κατασκευή της με δύο ομοθετικές σχέσεις του λόγου 1/√2.
Το όριό της έχει εκτιμώμενη διάσταση περίπου 1,9340[1].
Αν το μήκος του αρχικού τμήματος είναι 1, η περιοχή που καλύπτεται από την καμπύλη Λεβί είναι 1/45[1].
Η καμπύλη Λεβί είναι μία από τις έξι κανονικές 2-αυτοπαύλες (μπορεί να ανοίξει με δύο αντίγραφα του εαυτού της, ίδιου μεγέθους)[3].
Κατασκευή συστήματος L
Αν χρησιμοποιήσουμε το σύστημα Lindenmayer, η κατασκευή[4] της καμπύλης C αρχίζει με μια ευθεία γραμμή. Ένα ισοσκελές τρίγωνο με γωνίες 45°, 90° και 45° κατασκευάζεται χρησιμοποιώντας αυτή την ευθεία ως υποτείνουσα. Στη συνέχεια, η αρχική ευθεία αντικαθίσταται από τις άλλες δύο πλευρές αυτού του τριγώνου.
Στο δεύτερο βήμα, οι δύο νέες ευθείες σχηματίζουν η καθεμία τη βάση ενός άλλου ορθογώνιου ισοσκελούς τριγώνου και αντικαθίστανται από τις άλλες δύο πλευρές του αντίστοιχου τριγώνου. Έτσι, μετά από δύο στάδια, η καμπύλη παίρνει την όψη τριών πλευρών ενός ορθογωνίου με το ίδιο μήκος με την αρχική ευθεία, αλλά με το μισό πλάτος.
Σε κάθε επόμενο στάδιο, κάθε ευθύγραμμο τμήμα της καμπύλης αντικαθίσταται από τις άλλες δύο πλευρές ενός ορθογώνιου ισοσκελούς τριγώνου που κατασκευάζεται πάνω του. Μετά από n βήματα, η καμπύλη αποτελείται από 2n ευθύγραμμα τμήματα, καθένα από τα οποία είναι μικρότερο από την αρχική γραμμή κατά έναν παράγοντα 2n/2.
Αυτό το σύστημα L μπορεί να περιγραφεί ως εξής:
Μεταβλητές:
F
'Σταθερές:
+ −
'Έναρξη:
F
'Κανόνες:
F → +F−−F+
όπου "F" σημαίνει "τραβήξτε προς τα εμπρός", "+" σημαίνει "στρέψτε δεξιόστροφα κατά 45°" και "-" σημαίνει "στρέψτε αριστερόστροφα κατά 45°".
Η καμπύλη φράκταλ που αποτελεί το όριο αυτής της "άπειρης" διαδικασίας είναι η καμπύλη του Λεβί C. Πήρε το όνομά της από την ομοιότητά της με μια ιδιαίτερα διακοσμημένη εκδοχή του γράμματος "C". Η καμπύλη μοιάζει με τις λεπτότερες λεπτομέρειες του δέντρου του Πυθαγόρα.
Η διάσταση Χάουστορφ της καμπύλης C ισούται με 2 (περιέχει ανοιχτά σύνολα), ενώ το σύνορο έχει διάσταση περίπου 1.9340[5].
Κατασκευή IFS
Εάν χρησιμοποιείτε ένα επαναληπτικό σύστημα συναρτήσεων (IFS, ή στην πραγματικότητα τη μέθοδο IFS του παιχνιδιού χάους)[6], τότε η κατασκευή της καμπύλης C είναι λίγο πιο εύκολη. Θα χρειαστεί ένα σύνολο από δύο "κανόνες" οι οποίοι είναι οι εξής: Δύο σημεία σε ένα επίπεδο (οι μεταφραστές), καθένα από τα οποία συνδέεται με έναν συντελεστή κλίμακας 1/√2. Ο πρώτος κανόνας είναι μια περιστροφή 45° και ο δεύτερος −45°. Αυτό το σύνολο θα επαναλάβει ένα σημείο [x, y] από την τυχαία επιλογή οποιουδήποτε από τους δύο κανόνες και θα χρησιμοποιήσει τις παραμέτρους που σχετίζονται με τον κανόνα για την κλίμακα/περιστροφή και τη μετάφραση του σημείου χρησιμοποιώντας μια συνάρτηση 2D-μετασχηματισμού.
Διατύπωση :
από το αρχικό σύνολο σημείων .
Παράδειγμα εφαρμογής της καμπύλης Λεβί C
// Δείγμα υλοποίησης της καμπύλης Λεβί C σε Javaimportjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjavax.swing.JFrame;importjavax.swing.JPanel;importjava.util.concurrent.ThreadLocalRandom;publicclassC_curveextendsJPanel{publicfloatx,y,len,alpha_angle;publicintiteration_n;publicvoidpaint(Graphicsg){Graphics2Dg2d=(Graphics2D)g;c_curve(x,y,len,alpha_angle,iteration_n,g2d);}publicvoidc_curve(doublex,doubley,doublelen,doublealpha_angle,intiteration_n,Graphics2Dg){doublefx=x;doublefy=y;doublelength=len;doublealpha=alpha_angle;intit_n=iteration_n;if(it_n>0){length=(length/Math.sqrt(2));c_curve(fx,fy,length,(alpha+45),(it_n-1),g);// Recursive Callfx=(fx+(length*Math.cos(Math.toRadians(alpha+45))));fy=(fy+(length*Math.sin(Math.toRadians(alpha+45))));c_curve(fx,fy,length,(alpha-45),(it_n-1),g);// Recursive Call}else{Color[]A={Color.RED,Color.ORANGE,Color.BLUE,Color.DARK_GRAY};g.setColor(A[ThreadLocalRandom.current().nextInt(0,A.length)]);//For Choosing Different Color Valuesg.drawLine((int)fx,(int)fy,(int)(fx+(length*Math.cos(Math.toRadians(alpha)))),(int)(fy+(length*Math.sin(Math.toRadians(alpha)))));}}publicstaticvoidmain(String[]args){C_curvepoints=newC_curve();points.x=200;// Stating x valuepoints.y=100;// Stating y valuepoints.len=150;// Stating length valuepoints.alpha_angle=90;// Stating angle valuepoints.iteration_n=15;// Stating iteration valueJFrameframe=newJFrame("Points");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(points);frame.setSize(500,500);frame.setLocationRelativeTo(null);frame.setVisible(true);}}