内サイクロイドです。
ソースです。
import java.awt.Color;
import java.awt.Graphics2D;
import myMath.MyCircle;
import myMath.MyHypoCycloid;
import myMath.Tpl10;
public class TestMyHypoCycloid03 extends Tpl10 {
int t = 0;
double rc = 2.5; // 定円
double rm = 1.0; // 動円
public void init() {
tr.move(getWidth() / 2, getHeight() / 2);
tr.set(1, 0, 0, -1);
tr.scale(40);
setTimer(10);
}
public void draw(Graphics2D g2) {
double x;
MyHypoCycloid mp = new MyHypoCycloid();
MyCircle mc = new MyCircle();
x = Math.toRadians(t);
mp.set(rc, rm);
mc.set(0, 0, rc - rm);
g2.setColor(Color.black);
g2.draw(tr.LineX());
g2.draw(tr.LineY());
// 定円
g2.setColor(Color.blue);
g2.draw(tr.Circle(mc.x, mc.y, rc));
// 動円
g2.setColor(Color.green);
mc.p(x);
g2.draw(tr.Circle(mc.x, mc.y, rm));
// 半径
mp.p(x);
g2.draw(tr.Line(mc.x, mc.y, mp.x, mp.y));
// 点
g2.setColor(Color.red);
g2.fill(tr.Point(mp.x, mp.y));
draw(mp, 0, x);
if (t > 360 * 2) {
t = 0;
}
t++;
}
}
定円と動円の半径を変えるだけで、図形が変わります。
左 double rc = 2.5; // 定円 double rm = 1.0; // 動円 中 double rc = 3.0; // 定円 double rm = 1.5; // 動円 右 double rc = 3.0; // 定円 double rm = 0.75; // 動円