Lisajous2

to Lisajous2 :amp [:i.step 1] 1
    (local
    "po.x "po.y "omega.x "omega.y
    "loop.step "enlarge "reduce
    "colorList "cn "cl
    )
         
    name 2 "omega.x
    name 3 "omega.y
    name 5 "loop.step
    name 1.5 "enlarge
    name 0.97 "reduce
    ;make "colorList [[255 0 0][225 0 0][195 0 0][165 0 0][135 0 0]
    ; [0 255 0][0 225 0][0 195 0][0 165 0][0 135 0]]
    make "colorList [[255 255 0][225 225 0][195 195 0][165 165 0][135 135 0]
       [0 255 255][0 225 225][0 195 195][0 165 165][0 135 135]]
    ;make "colorList [[0 0 255][0 0 225][0 0 195][0 0 165][0 0 135]
    ; [255 0 255][225 0 225][195 0 195][165 0 165][135 0 135]]
    make "cn 1
    make "cl count :colorList
         
    window
    (for "amp.loop :loop.step :amp [
      penup
      test :cn > :cl
      iftrue [make "cn 1]
      setpc item :cn :colorList
      (for "i 0 360 [
         make "po.x (* * :amp.loop sin * :omega.x :i :enlarge)
         make "po.y (* :amp.loop sin * :omega.y :i)
         setxy sentence :po.x :po.y
         pendown
      ] :i.step)
      make "cn (+ :cn 1)
      make "i.step (* :i.step :reduce)
    ] :loop.step)
end

Lisajous2 120

 Lisajous1の応用です。振幅数 amp.loop を、徐々に大きくしながら同じ振動数のリサージュ曲線を描いています。
ただし、大きくなるに連れて図形が大ざっぱに成るので、内側の for ループでステップ i.step を少しずつ増やしてみました。
描画色は、リスト colorList に放り込んだ色を順番に取出しています。

Sample24

to radian2angle :radnum
    output / * :radnum 180 pi
end
         
to msgn :num
    output * -1 :num
end
         
to sample24 :amp
    (local
    "po.x "po.y
    "t.x "t.y
    )
         
    penup
    (for "t 0 16 [
       make "t.x cos radian2angle * :t pi
       make "t.y cos radian2angle * msgn :t pi
         
       make "po.x (* :amp cos radian2angle + :t.x (/ * :t pi 4))
       make "po.y (* :amp cos radian2angle - :t.y (/ * :t pi 8))
       setxy sentence :po.x :po.y
       pendown
    ] 0.025)
end

sample24 100
何でしょうこれ?コサインを更にコサイン?
昔BASIC言語のマニュアルにあった物を、Logoに移植してみました。
これも、リサージュ曲線の応用の一つですね。

Helicoid

to helicoid :amp :loop [:offset 0] 2
    (local
    "po.x1 "po.y1 "po.y2
    "vwidth 
    )
 
    name 30 "vwidth
    make "po.y1 (- * :vwidth :loop (* :vwidth 0.5))
    make "po.y2 (+ :po.y1 :vwidth)
         
    penup
    (for "i 0 (* 360 :loop) [
       make "po.x1 (* :amp cos :i)
       make "po.y1 (- :po.y1 1)
       make "po.y2 (- :po.y2 1)
       setxy sentence + :offset :po.x1 :po.y2
       penup
       setxy sentence :offset :po.y1
       pendown
       setxy sentence + :offset :po.x1 :po.y2
    ] 6)
end






helicoid 80 4
ヘリコイド曲線(つる巻き曲線)です。
立体的な渦巻きの事らしいです。:-)
ですから上から見た図形を、描いても判らないので横から見た図形です。
まるで螺線階段の様ですね。
そう言えば遺伝子DNAは、二重螺線構造ですね。