拡大・縮小と平行移動をしてみます。 原点(0, 0) と点(1, 0) を結ぶ直線と、原点(0, 0) と点(0, 1) を結ぶ直線を描いています。
import java.awt.Color;
import java.awt.Graphics2D;
import myMath.MyTrans2D;
import myMath.Tpl02;
public class TestMyTrans02_1 extends Tpl02 {
MyTrans2D tr = new MyTrans2D();
public void init() {
tr.scale(50); // 拡大
tr.move(1, 1); // 原点移動
}
public void draw(Graphics2D g2) {
g2.setColor(Color.red);
g2.draw(tr.Line(0, 0, 1, 0));
g2.setColor(Color.green);
g2.draw(tr.Line(0, 0, 0, 1));
}
}
実行画面
グラフィックス画面の単位は1ドットです。
50ドットを1とすることを考えます。
x軸方向で考えてみます。
このとき、点 (1, 0) は点 (50, 0) に移ります。
ですから、k = 50 とします。
k の値が倍率ということです。
y軸方向も同様です。
このとき、点 (0, 1) は点 (0, 50) に移ります。
原点を移動すればこんな感じになります。
y軸の向きを変える。
import java.awt.Color;
import java.awt.Graphics2D;
import myMath.MyTrans2D;
import myMath.Tpl02;
public class TestMyTrans02_2 extends Tpl02 {
MyTrans2D tr = new MyTrans2D();
public void init() {
tr.set(1, 0, 0, -1); // y軸の向き
tr.scale(50); // 拡大
tr.move(1, -1); // 原点移動
}
public void draw(Graphics2D g2) {
g2.setColor(Color.red);
g2.draw(tr.Line(0, 0, 1, 0));
g2.setColor(Color.green);
g2.draw(tr.Line(0, 0, 0, 1));
}
}
実行画面
グラフィックス画面のy軸は、下に向いています。
この向きを変えるには、(c, d) の値を変えます。 この例では、赤い部分の符号が変わっています。 ですから、原点は左下になっています。
原点の周りの回転もできます。
import java.awt.Color;
import java.awt.Graphics2D;
import myMath.MyTrans2D;
import myMath.Tpl02;
public class TestMyTrans02_3 extends Tpl02 {
MyTrans2D tr = new MyTrans2D();
public void init() {
tr.set(1, 0, 0, -1); // y軸の向き
tr.scale(50); // 拡大
tr.move(1, -1); // 原点移動
tr.rotate(45); // 原点の周りの回転
}
public void draw(Graphics2D g2) {
g2.setColor(Color.red);
g2.draw(tr.Line(0, 0, 1, 0));
g2.setColor(Color.green);
g2.draw(tr.Line(0, 0, 0, 1));
}
}
実行画面
左周りに45度回転させました。