媒介変数表示とグラフ

エピサイクロイドを描く

エピサイクロイドの媒介変数表示

定円の半径を \( 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);
	}
}

[前へ] [戻る] [次へ]