Η καμπύλη Πεάνο, γεμίζει το χώρο. Εδώ γεμίζει με μια ψευδαίσθηση τριών διαστάσεων. Δείτε τη εικόνα παρακάτω. Εμφανίζεται μια πιο καθαρή περιοχή στη μέση ενώ στις άκρες είναι πιο φλου, σαν να έχουμε βάθος πεδίου!
Το πρόγραμμα που δημιούργησε τηνjpg εικόνα αυτή είναι αυτό:
move 0,0
image "g1.emf"
a$=""
copy scale.x, scale.y to a$
image a$ export "g1.jpg", 80
Πήρε την εξαγωγή του επόμενου προγράμματος, που ήταν σε emf (σχέδιο, είναι μέγεθος 32MB, γιατί έχει όλες τις εντολές γραμμών, και εδώ το σχέδιο γίνεται με πάρα πολλές γραμμές), το εμφάνισε στην κονσόλα της Μ2000, το αντέγραψε ως Bitmap, και το έσωσε ως jpg.
Και αυτό εδώ είναι ο Εξερευνητής Πεάνο. Λογικά όλοι δημιουργούν μια καμπύλη Πεάνο με χρήση ακεραίων. Εδώ γίνεται χρήση διπλής ακρίβειας πραγματικών. Το σχέδιο γίνεται μέσα σε ένα μπλοκ Drawing (Σχέδιο) το οποίο παραδίδει μια διάρθρωση μνήμης, εδώ το B. Με μια Len(B) η Μήκος() μπορούμε να δούμε το μήκος σε Bytes. Εδώ έχει 32 εκατομμύρια Bytes. Στο τέλος την γράφουμε ως δυαδικό αρχείο, με τρεις εντολές Open, Put, Close. Η διάρθρωση B έχει φτιαχτεί ως emf, από την εντολή Drawing, δηλαδή σαν ένα αρχείο στη μνήμη. Έτσι η εντολή εικόνα ή Image μπορεί να την διαχειριστεί.
Όπως βλέπουμε η καμπύλη δημιουργείται από μια ρουτίνα (υποπρόγραμμα), που καλεί τον εαυτό του (recursion, αναδρομή).
Την ρουτίνα την πήρα από εδώ: http://rosettacode.org/wiki/Peano_curve στην οποία έχω αναρτήσει και ένα πιο απλό πρόγραμμα!
Module Peano_Explorer {
cls 1, 0
once=true
Flush
data 3.9, 3
for i= 3.4 to 4 step 0.018
data i
next i
Drawing scale.x, scale.y {
while not empty
read k
wi=k^4
n=twipsX*int(K/3*12)
wi2=wi*(3/k)^1.5
(dx, dy)=((scale.x-wi2*n)/2, (scale.y-wi2*n)/2)
move dx , dy
if once then fill wi2*n, wi2*n, 0
dx+=k*1.2*twipsX
dy+=k*1.2*twipsY
move dx, dy
if not once then Pen 15-int((k mod 0.7)*8+2) {Peano(0,0,wi,0, 0)}
once=false
next
end while
} as B
Move 0,0
image B
open "g1.emf" for output as #f
put #f, B
close #f
Sub Peano(x, y, lg, i1, i2)
If lg ==1 Then
Draw to x*n+dx , y*n+dy
Exit sub
end if
lg/=k
Peano(x+2*i1*lg, y+2*i1*lg, lg, i1, i2)
Peano(x+(i1-i2+1)*lg, y+(i1+i2)*lg, lg, i1, 1-i2)
Peano(x+lg, y+lg, lg, i1, 1-i2)
Peano(x+(i1+i2)*lg, y+(i1-i2+1)*lg, lg, 1-i1, 1-i2)
Peano(x+2*i2*lg, y+2*(1-i2)*lg, lg, i1, i2)
Peano(x+(1+i2-i1)*lg, y+(2-i1-i2)*lg, lg, i1, i2)
Peano(x+2*(1-i1)*lg, y+2*(1-i1)*lg, lg, i1, i2)
Peano(x+(2-i1-i2)*lg, y+(1+i2-i1)*lg, lg, 1-i1, i2)
Peano(x+2*(1-i2)*lg, y+2*i2*lg, lg, 1-i1, i2)
End Sub
}
Αν μπει σε ένα τμήμα έστω Α για να τρέξει πρέπει να έχει και την εντολή που ξεκινάει το εσωτερικό πια τμήμα Peano_Explorer. Η εντολή είναι το όνομα του τμήματος!
Clipboard Dir$
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
You can feel free to write any suggestion, or idea on the subject.