// 直方体を xy-平面上に描く // 平行移動メソッド graphics.Parallel を適用 import java.applet.Applet; import java.awt.*; public class cuboid2 extends Applet { public void paint(Graphics g) { final double RADIAN = Math.PI/180.0; double scale = 5.0; // 大きさ double theta = 30; // 回転角度 int a = 30; // 大きさ a×b×c の直方体 int b = 40; int c = 50; int A = 50; // 平行移動距離(x 軸方向) int B = 50; // 平行移動距離(y 軸方向) int C = 50; // 平行移動距離(z 軸方向) _xyz lmn = new _xyz(); lmn.x = A; lmn.y = B; lmn.z = C; // 座標軸を描く graphics.SetColor(g,0x000000); graphics.DrawLine(g,-200,0,200,0); graphics.DrawLine(g,0,-200,0,200); // 稜を描く graphics.SetColor(g,0x0000ff00); // 下底 draw_line(g,a,0,a,0,lmn); draw_line(g,0,0,a,0,lmn); draw_line(g,0,0,0,0,lmn); draw_line(g,0,0,a,0,lmn); //上底 draw_line(g,a,b,a,b,lmn); draw_line(g,0,b,a,b,lmn); draw_line(g,0,b,0,b,lmn); draw_line(g,0,b,a,b,lmn); //右側面 draw_line(g,a,0,a,b,lmn); draw_line(g,0,0,0,b,lmn); //左側面 draw_line(g,a,0,a,b,lmn); draw_line(g,0,0,0,b,lmn); } void draw_line(Graphics g, int x1, int y1, int x2, int y2, _xyz lmn) { // 点 (x1,y1) と (x2,y2) を lmn だけ平行移動して, この2点間の線分を描く _xyz xyz = new _xyz(); xyz.x = x1; xyz.y = y1; xyz.z = 0; x1 = (int)graphics.Parallel(xyz,lmn).x; y1 = (int)graphics.Parallel(xyz,lmn).y; xyz.x = x2; xyz.y = y2; xyz.z = 0; x2 = (int)graphics.Parallel(xyz,lmn).x; y2 = (int)graphics.Parallel(xyz,lmn).y; graphics.DrawLine(g,x1,y1,x2,y2); } }