PDA

View Full Version : سوال: رسم مارپیچ فیبوناچی



tstsst
چهارشنبه 16 فروردین 1391, 23:36 عصر
مارپیچ فیبوناچی با رسم قوس هایی که با اتصال گوشه های مربع هایی که به طول خود دنباله هستند ایجاد می شوند !
دنباله برابر :
1,1,2,3,5,8,13,21,34,55,89,144,233,...

فرمول کلیش برابر :
f(x) = f(x - 1) + f(x - 2)

و در وی بی : (10 برابر شدست برای ادامه بدرد می خوره)

Dim fibonacci(5) As Integer
fibonacci(0) = 10
fibonacci(1) = 10
For i = 2 To 5
fibonacci(i) = (fibonacci(i - 1) + fibonacci(i - 2))
Next

حالا من می خوام مارپیچ رو رسم کنم رسم مربع هاش به صورت زیره:

Dim x(5), y(5) As Integer
Dim ti(5) As Rectangle
x(0) = 100
x(1) = 110
x(2) = 100
x(3) = 70
x(4) = 70
x(5) = 120
y(0) = 100
y(1) = 100
y(2) = 80
y(3) = 80
y(4) = 110
y(5) = 80
For i = 0 To 5
ti(i) = New Rectangle(x(i), y(i), fibonacci(i), fibonacci(i))
Panel1.CreateGraphics.DrawRectangle(Pens.Red, ti(i))
Next

چجوری می شه خود مارپیچ رو رسم کرد ؟! (از این Me.CreateGraphics.DrawArc برای این مورد چجوری میشه استفاده کردم ؟ )
__________________________________________________ ___________________________________

Dim p(7) As Point
p(0) = New Point(x(1) - 5, y(0))
p(1) = New Point(x(0), y(4) - 5)
p(2) = New Point(x(1), y(4))
p(3) = New Point(x(5), y(0))
p(4) = New Point(x(0), y(2))
p(5) = New Point(x(3), y(4))
p(6) = New Point(x(5), 160)
p(7) = New Point(200, y(5))
Panel1.CreateGraphics.DrawCurve(Pens.Blue, p)

البته زیاد دقیق نیست ولی درسته
و کد کامل (مارپیچ + مربع ها)

Dim fibonacci(5) As Integer
fibonacci(0) = 10
fibonacci(1) = 10
For i = 2 To 5
fibonacci(i) = (fibonacci(i - 1) + fibonacci(i - 2))
Next
Dim x(5), y(5) As Integer
Dim ti(5) As Rectangle
x(0) = 100
x(1) = 110
x(2) = 100
x(3) = 70
x(4) = 70
x(5) = 120
y(0) = 100
y(1) = 100
y(2) = 80
y(3) = 80
y(4) = 110
y(5) = 80
For i = 0 To 5
ti(i) = New Rectangle(x(i), y(i), fibonacci(i), fibonacci(i))
Panel1.CreateGraphics.DrawRectangle(Pens.Red, ti(i))
Next
Dim p(7) As Point
p(0) = New Point(x(1) - 5, y(0))
p(1) = New Point(x(0), y(4) - 5)
p(2) = New Point(x(1), y(4))
p(3) = New Point(x(5), y(0))
p(4) = New Point(x(0), y(2))
p(5) = New Point(x(3), y(4))
p(6) = New Point(x(5), 160)
p(7) = New Point(200, y(5))
Panel1.CreateGraphics.DrawCurve(Pens.Blue, p)

tstsst
پنج شنبه 17 فروردین 1391, 13:38 عصر
اینم شکل کلیشه !!

85254

گه مربع های قرمز مربع های نام برده در پست قبل و مارپیچ هم که معلومه !؟.

(اگه دقیق نیست به خاطر اینه که با پینته ویندوز کشیده شده)