Java3DとHexGridの座標

私は、Point3fが六角形(それぞれが特定のShape3Dオブジェクトである)で作られたグリッドの内側にあるかどうかを見つける方法を見つけようとしています。

ポイントが端にある場合、Point3fまたは両方のHeaxgonsを組み立てる六角形の色を変更することです。

グリッドを作成するには、このロジックを使用してください。 http://playtechs.blogspot.com/2007 /04/hex-grids.html したがって、Hexagonがどのように配置されているかを知ることはかなり簡単です。

私の問題は座標に関連しています。SceneGraphで使用している構造体があります。

BranchGroup > TransformGroup > Hexagrid (TransformGroup) > HexaRow (TranformGroup) > Hexagon (Shape3D)

各TransfromGroupはTransform3D(Vector3F)で作成され、3D空間に配置されます

Point3fがSceneGraphのルート上に生成されるため、BranchGroupから各Hexagonの座標を復元したいと思います。

私はHexMapにVertex座標を入れようとしましたが、PointはHexagonのグリッドの座標です。Point3f []はHexagonの各頂点の3D空間の座標です。 私は行に六角形を追加しながらそれをしましたが、3つのベクトルは、それぞれのローカル座標系とそのステップまで構造を配置するので、私は正しく動作する必要はありません。

そこに到達するために使用されたすべてのベクトルを追加することなく、Shape3dオブジェクトの座標を見つける簡単な方法はありますか?

それは私の目標を達成するための適切な方法ですか? (私は衝突検出が2つのオブジェクトでのみ機能し、私のポイントがエッジ上にあるかどうかを知る必要があり、3つのオブジェクトを作成しています)

助けてくれてありがとう !

1

2 答え

さて、最終的に私はより良いアプローチを見つけました、Transform3D mulメソッドを使用して

    translateRootTG.addChild(hexaGrid);

    Polygon myPolygon = hexaGrid.getPolygon(19,1);
   //Get the First TransformGroup that containt the first Translation
    TransformGroup firstTransform= (TransformGroup)myPolygon.getParent();
   //the the Second TransfromGroup that containt the secondary Translation
    TransformGroup secondTransform = (TransformGroup)myPolygon.getParent().getParent().getParent().getParent();
   //Get the Transform3D from the first TransformGroup
    Transform3D firstTranslation = new Transform3D(); 
    firstTransform.getTransform(firstTranslation);//put the Transform in T3D var
   //Get the Transform3D from the second TransformGroup
    Transform3D secondTranslation = new Transform3D(); 
    secondTransform.getTransform(secondTranslation);//put the Transform in T3D var

   //Mul Transform3D to have complete translation
    Transform3D t3DTotalPolygon = new Transform3D();
    t3DTotalPolygon.mul(firstTranslation, secondTranslation);

    TransformGroup tgTest = new TransformGroup(t3DTotalPolygon);
    tgTest.addChild(new ColorCube(0.03f));
    translateRootTG.addChild(tgTest);
0
追加された

これは役立つかもしれません:

javax.media.j3d.Node/Shape3D.getLocalToVworld(Transform3D t)
0
追加された