定円の半径を \( r_c \), 動円の半径を \( r_m \) としたときの、 エピサイクロイドの媒介変数表示です。
\[ \begin{cases} x = (r_c + r_m) \cos t - r_m \cos \left( \frac{ r_c + r_m }{ r_m } t \right) \\ y = (r_c + r_m) \sin t - r_m \sin \left( \frac{ r_c + r_m }{ r_m } t \right) \end{cases} \]package myMath; // エピサイクロイドの媒介変数表示 public class MyEpiCycloid extends MyCurve { private double rc; // 定円 private double rm; // 動円 // コンストラクタ public MyEpiCycloid() { rc = rm = 1; } public void set(double rc, double rm) { this.rc = rc; this.rm = rm; } public void p(double t) { x = (rc + rm) * Math.cos(t) - rm * Math.cos((rc / rm + 1) * t); y = (rc + rm) * Math.sin(t) - rm * Math.sin((rc / rm + 1) * t); } }
カージオイドとネフロイドを描いてみます。
import java.awt.Color; import java.awt.Graphics2D; import myMath.MyEpiCycloid; import myMath.Tpl20; public class TestMyEpiCycloid extends Tpl20 { public void draw2(Graphics2D g2) { MyEpiCycloid mf = new MyEpiCycloid(); g2.setColor(Color.red); mf.set(1, 1); // カージオイド draw(mf, 0, 2 * Math.PI); g2.setColor(Color.yellow); mf.set(2, 1); // ネフロイド draw(mf, 0, 2 * Math.PI); } }