媒介変数表示とグラフ

ハイポサイクロイドを描く

ハイポサイクロイドの媒介変数表示

ハイポサイクロイドの媒介変数表示です。 定円の半径を \( 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 MyHypoCycloid extends MyCurve {

	private double rc; // 定円
	private double rm; // 動円

	// コンストラクタ
	public MyHypoCycloid() {
		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.MyHypoCycloid;
import myMath.Tpl20;

public class TestMyHypoCycloid extends Tpl20 {
	public void draw2(Graphics2D g2) {

		MyHypoCycloid mf = new MyHypoCycloid();

		g2.setColor(Color.red);
		mf.set(2, 1); // 定円の直径
		draw(mf, 0, 2 * Math.PI);

		g2.setColor(Color.yellow);
		mf.set(4, 1); // アステロイド
		draw(mf, 0, 2 * Math.PI);
	}
}

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