ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】トゲトゲのリングSupertoroidを作る。

成果物

www.youtube.com
前回のSupershapesに続き、Supertoroidを作ってみました。とがり具合を二つのパラメータでコントロールできます。

仕組み

トーラス(リング)の式はこのようになっています。
 \begin{array}{l}
x=\cos \theta ( r_{0} +r_{1}\cos \varphi )\\
y=\sin \theta ( r_{0} +r_{1}\cos \varphi )\\
z=r_{1}\sin \varphi 
\end{array}
これをべき乗すればSupertoroidになるのですが、そのままでは符号が変わってしまうのでsgn(符号関数)で先に符号を求め、絶対値をべき乗しています。
 \begin{array}{l}
x=C^{n1}_{\theta }\left( r_{0} +r_{1} C^{n2}_{\varphi }\right)\\
y=S^{n1}_{\theta }\left( r_{0} +r_{1} C^{n2}_{\varphi }\right)\\
z=r_{1} S^{n2}_{\varphi }\\
べき乗しても符号が変わらないようにするための式です。\\
C^{n}_{\theta } =sgn(\cos \theta ) |\cos \theta |^{n}\\
S^{n}_{\theta } =sgn(\sin \theta ) |\sin \theta |^{n}
\end{array}
こちらのサイトを参考にしました。
Toroidal Nature
Supertoroid - Wikipedia

コード