[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:01668] Re: BoundingBox について



 〜 12月1日新しいビジネスが始まる!ビジネスも楽天、楽天ビジネス誕生 〜
         ●●●●●●●●●●●●●●●●●●●●●●●●●●●
         ● サービスリリース第一弾!ビジネスサービス商談市場 ●
         ●●●●●●●●●●●●●●●●●●●●●●●●●●●
〜〜〜〜〜 今すぐアクセス! http://business.rakuten.co.jp 〜〜〜〜〜
----------------------------------------------------------------------

えんどうです。

ローカル座標中心ではなく
物体のBoundingBoxの中点を得たいのですね?

> Shape3D、あるいはGeometryのクラスのオブジェクトから
> 自動的にBoundingBoxを得るようなメソッドはあるのでしょうか。
> Bounds#getBounds や BoundingBox#BoundingBox(Bounds boundsObject)
> などが使えるのかと思ったのですが、実際の使い方が解りません。

Node#getBounds()でBounds型のオブジェクトが返りますが、
デフォルトではBoundingBox型のインスタンスではないかと推測します。
instanceof演算子で調べてみてください。

> もし自動的にBoundingBoxが得られるとしたら、どのような
> データ形式で帰って来るのでしょうか。
> BoundingBoxが得られたら、その頂点座標を用いて
> オブジェクトの中心座標を得たいと思っています。

もしBoundingBox型のインスタンスならBoundingBox型にキャストして
getUpper(), getLower()メソッドで (Xmax, Ymax, Zmax), (Xmin, Ymin Zmin)
の2点が得られます。

> それに関連してなのですが、オブジェクトから
> それを構成しているポリゴンの頂点座標を得るには
> どうすればよいでしょうか。
> GeometryArray#getCoordRef3d()を使えば良いんじゃないかと
> 考えたのですが、実際の書き方が解りません。
> 
>       Shape3D objs =(Shape3D)namedobjs.get(objskeyArray[i]);
>       Geometry geom = objs.getGeometry();
>       objsCoordArray[j] = geom.getCoordRef3f();
>  
> と記述したのですが、geomのクラスと getCoordRef3d
> で使えるクラスが違うので、エラーが出ます。

通常は GeometryArray#getCoordinates() で得られます。

BY_REFERENCEの場合は

 Point3d[] vertices = geom.getCoordRef3d();

こんな感じでいかがでしょうか。

-- 
ENDO Yasuyuki <yasuyuki@xxxxxxxxxxxx>
http://www.ss.iij4u.or.jp/~eyasuyuk/ (Personal/Japanese Only)
http://www.javaopen.org/jfriends/ (Japanese Only)