私はポリゴンなどをいじっているだけで、独自の回転可能な立方体を作成しようと決心し、各「ポリゴン」に8つの頂点を持つ6つの異なる側面を生成することでこれを達成することにしました. (立方体の遠近法に合うように傾けることができる正方形です。LWJGL などのような「クワッド」メソッドは見つかりませんでした)問題; 塗装順です。コードを 1 行ずつ下っていくときに描画される「順序」があることは理解していますが、私のコードを見ると、この効果が得られないように順序を変更できると思いますか? 「キューブ」をレンダリングすると:
http://i.stack.imgur.com/3MdT2.png
各面を異なる色で着色しましたが、ご覧のとおり、かなりひどい結果になりました。通常、動かない2D立方体をレンダリングするだけなら、そうならないように描画順を決めるのですが、回転させて動かしたいので、それはかなり無意味だと思います. .
これが私のコードです。どんな助けでも大歓迎です、ありがとう! (私がアプレットを使っているという事実は無視してください。私はただテストしているだけです...)
package advanced;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
public class rotatingCube extends Applet implements Runnable {
private static final long serialVersionUID = -5353063756246119245L;
int[][] vertex = {
{ 50, 50 }, { 100, 50 }, { 100, 100 }, { 50, 100 },
{ 75, 75 }, { 125, 75 }, { 125, 125 }, { 75, 125 }
};
int[] Xpoly1={ vertex[0][0], vertex[1][0], vertex[2][0], vertex[3][0] },
Ypoly1={ vertex[0][1], vertex[1][1], vertex[2][1], vertex[3][1] },
Xpoly2={ vertex[4][0], vertex[5][0], vertex[6][0], vertex[7][0] },
Ypoly2={ vertex[4][1], vertex[5][1], vertex[6][1], vertex[7][1] },
Xpoly3={ vertex[5][0], vertex[1][0], vertex[2][0], vertex[6][0] },
Ypoly3={ vertex[5][1], vertex[1][1], vertex[2][1], vertex[6][1] },
Xpoly4={ vertex[4][0], vertex[0][0], vertex[3][0], vertex[7][0] },
Ypoly4={ vertex[4][1], vertex[0][1], vertex[3][1], vertex[7][1] },
Xpoly5={ vertex[3][0], vertex[2][0], vertex[6][0], vertex[7][0] },
Ypoly5={ vertex[3][1], vertex[2][1], vertex[6][1], vertex[7][1] },
Xpoly6={ vertex[0][0], vertex[1][0], vertex[5][0], vertex[4][0] },
Ypoly6={ vertex[0][1], vertex[1][1], vertex[5][1], vertex[4][1] };
public void start() {
setSize(500, 500);
new Thread(this).start();
}
public void run() {
}
public void paint(Graphics e) {
Graphics2D g = (Graphics2D) e;
g.setColor(Color.RED);
g.fillPolygon(Xpoly1, Ypoly1, 4);
g.setColor(Color.GREEN);
g.fillPolygon(Xpoly2, Ypoly2, 4);
g.setColor(Color.BLUE);
g.fillPolygon(Xpoly3, Ypoly3, 4);
g.setColor(Color.YELLOW);
g.fillPolygon(Xpoly4, Ypoly4, 4);
g.setColor(Color.ORANGE);
g.fillPolygon(Xpoly5, Ypoly5, 4);
g.setColor(Color.PINK);
g.fillPolygon(Xpoly6, Ypoly6, 4);
}
}