Итак, мы знаем формулы окружности, кардиоиды и улитки Паскаля. Видно, что формулы весьма схожи, осталось объединить их в один цикл для получения первого эффекта
Dim x As Single, y As Single, b As SingleDim twoPi As Single, I As Single, R As SingleDim colClstwoPi = Atn(1) * 8Scale (-25, 25)-(25, -25) For b = 0 To 8 Step 2For I = 0 To twoPi Step 0.01 R = b + 6 * Cos(I) x = R * Cos(I) y = R * Sin(I) DrawWidth = 3 col = RGB(255 - 30 * b, 128 + (-1) ^ (b * 1) * b * 60, b * 110)Line (x, y)-Step(0, 0), col, BFNext I
Next b
В нашем примере a - величина постоянная, а b меняется в цикле от b=0 до b=8. Вы видите, как меньшая петля вырождается в точку, а большая удваивает свой радиус, превращаясь в кардиоиду.
Доработаем рисунок. Изменим чуточку программу и получим красивый узор
Cls pi = 4 * Atn(1) scal = 15 a = 140 DrawWidth = 8 For l = 0 To 200 Step 13 For t = 0 To 360 Step 0.25 tt = t * pi / 180 x = a * Cos(tt) * Cos(tt) + l * Cos(tt) y = a * Cos(tt) * Sin(tt) + l * Sin(tt) red = 255 - 250 * Sin(0.31 * l) green = 255 - 250 * Sin(0.3 * l) blue = 255 - 250 * Sin(0.29 * l) Col = RGB(red, green, blue) If l Mod 2 = 0 Then Col = RGB(0, 0, 0) Else Col = RGB(255, l, 255 - l) End If Line (x + 190, y + 250)-Step(ss, ss), Col, BF PSet (x + 190, y + 250), Col Next t Next l