空間座標

軸の周りの回転

TestMySpace04_1.java

import java.awt.Color;
import java.awt.Graphics2D;

import myMath.MyPoint3D;
import myMath.Tpl10;

public class TestMySpace04_1 extends Tpl10 {

	int t = 0;
	MyPoint3D p = new MyPoint3D();

	public void init() {
		tr.move(getWidth() / 2, getHeight() / 2);
		tr.set(1, 0, 0, -1);
		tr.scale(50);
		setTimer(200);
		p.set(2, 1, 0);
	}

	public void draw(Graphics2D g2) {
		p.rotate(t, 0, 0);
		// 軸
		g2.setColor(Color.red);
		g2.draw(tr.LineX3D());
		g2.setColor(Color.green);
		g2.draw(tr.LineY3D());
		g2.setColor(Color.blue);
		g2.draw(tr.LineZ3D());

		g2.draw(tr.Line(0, 0, 0, p.x, p.y, p.z));
		g2.draw(tr.Line(2, 0, 0, p.x, p.y, p.z));
		t++;
	}
}

実行例

x軸の周りに回転します。

TestMySpace04_2.java

import java.awt.Color;
import java.awt.Graphics2D;

import myMath.MyPoint3D;
import myMath.Tpl10;

public class TestMySpace04_2 extends Tpl10 {

	int t = 0;

	public void init() {
		tr.move(getWidth() / 2, getHeight() / 2);
		tr.set(1, 0, 0, -1);
		tr.scale(50);
		setTimer(100);
	}

	public void draw(Graphics2D g2) {
		MyPoint3D p1 = new MyPoint3D();
		MyPoint3D p2 = new MyPoint3D();

		// 軸
		g2.setColor(Color.red);
		g2.draw(tr.LineX3D());
		g2.setColor(Color.green);
		g2.draw(tr.LineY3D());
		g2.setColor(Color.blue);
		g2.draw(tr.LineZ3D());

		double x = 0;
		while (x < 3) {
			g2.setColor(Color.black);
			p1.set(x, Math.sqrt(x), 0);
			p1.rotate(t, 0, 0);
			x += 0.1;
			p2.set(x, Math.sqrt(x), 0);
			p2.rotate(t, 0, 0);
			g2.draw(tr.Line(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z));

			g2.setColor(Color.orange);
			g2.draw(tr.Line(x, 0, 0, p2.x, p2.y, p2.z));
		}
		t++;
	}
}

TestMySpace04_3.java

import java.awt.Color;
import java.awt.Graphics2D;

import myMath.MyPoint3D;
import myMath.Tpl10;

public class TestMySpace04_3 extends Tpl10 {

	int t = 0;

	public void init() {
		tr.move(getWidth() / 2, getHeight() / 2);
		tr.set(1, 0, 0, -1);
		tr.scale(50);
		setTimer(100);
	}

	public void draw(Graphics2D g2) {
		MyPoint3D p1 = new MyPoint3D();
		MyPoint3D p2 = new MyPoint3D();

		// 軸
		g2.setColor(Color.red);
		g2.draw(tr.LineX3D());
		g2.setColor(Color.green);
		g2.draw(tr.LineY3D());
		g2.setColor(Color.blue);
		g2.draw(tr.LineZ3D());

		double x = 0;
		while (x < 3.1) {
			g2.setColor(Color.black);
			p1.set(x, Math.sin(x), 0);
			p1.rotate(t, 0, 0);
			x += 0.1;
			p2.set(x, Math.sin(x), 0);
			p2.rotate(t, 0, 0);
			g2.draw(tr.Line(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z));

			g2.setColor(Color.orange);
			g2.draw(tr.Line(x, 0, 0, p2.x, p2.y, p2.z));
		}
		t++;
	}
}

[戻る]