0

これは、サイド 0.3 の 2 つの立方体を隣り合わせて描画するコードの一部です。代わりにこれを取得すると、次のようになります: http://imageshack.us/photo/my-images/189/89254345.png/ (それらは途中で変換を印刷してみましたが、問題ないようです。

1

1.0、0.0、0.0、0.0

0.0、1.0、0.0、0.0

0.0、0.0、1.0、0.0

0.0、0.0、0.0、1.0

2

1.0、0.0、0.0、0.3

0.0、1.0、0.0、0.0

0.0、0.0、1.0、0.0

0.0、0.0、0.0、1.0

2 番目のボックスが 0.15 だけ移動したかのようですが、dx に 2 を掛けると、y 軸または z 軸を横切る変換で異なる次元のより多くの直方体が追加されると、問題が発生します。

private BranchGroup rootGroup;

public void addBox(float dx){
    Cuboid Cuboid1 = new Cuboid(0.3f ,0.3f, 0.3f, appearence); 
    TransformGroup tg = new TransformGroup();
Transform3D transform = new Transform3D();
    Vector3f vector = new Vector3f(dx, 0f, 0f);
    transform.setTranslation(vector);
    tg.setTransform(transform);
    tg.addChild(Cuboid1);
    rootGroup.addChild(tg);
}

public void addBoxes(){
    for(int i=0;i<2;i++){
        addBox(i*0.3f);
    }
}

直方体クラスはここからです: http://www.java2s.com/Code/Java/3D/Java3DBoxandacustomCuboidimplementation.htm

4

1 に答える 1

0

サイズが 0.6 の直方体を作成しているように見えるので、直方体の中心点が 0,0,0 であるため、最初のボックスの X、Y、Z 値は +0.3 と -0.3 になります。

2 番目のボックスは同じですが、軸の 1 つで 0.3-0.3=0.0 および +0.3+0.3 = 0.6 の値を与える 1 つの軸で 0.3 オフセットされます。

これにより、写真と一致するように見える1つの軸で半分重なる2つのボックスが得られます。

おそらく、幅/高さ/深さが 0.3/2 のボックスを作成し、ボックスの中心が 0.15,0.15 になるように 0.3/2 で移動し、0.3 の代わりに 0.15 の倍率を使用するつもりですか?

于 2013-01-22T00:19:58.783 に答える