Skip to content
Daisuke YAMAGUCHI edited this page Oct 27, 2015 · 20 revisions

要約

BndBox クラスは、 X, Y, Z 軸それぞれの方向に大きさを持つ直方体の入れ物のようなものです。形状が存在している空間を概略的に表すために用います。 Open CASCADE における Bnd_Box クラスに相当します。

複雑な幾何形状同士の正確な交線計算を大量に行うと大きな処理コストがかかります。X, Y, Z 軸方向それぞれに「幾何形状が存在する範囲」を表すバウンディングボックスを交差判定などに用いると、コストを書けずに交差しない物体を処理から弾くことができます。また、トポロジー情報に含まれるトランスレーション(ローカル座標系)を意識せずに、ワールド座標系における幾何形状の存在しているおおよその位置と大きさを取得することが可能です。

BndBox オブジェクトを作成するには Shape オブジェクトの bndbox メソッドを用います。

インスタンスメソッド

  • min -> [x, y, z]

    • バウンディングボックスが示す最小位置を返します。
  • max -> [x, y, z]

    • バウンディングボックスが示す最大位置を返します。
  • void? -> bool

    • 空かどうかを返します。
  • void! -> nil

    • 空に設定します。破壊的メソッドです。
  • whole? -> bool

    • X, Y, Z 軸方向の大きさそれぞれが無限大であれば真を返します。
  • whole! -> nil

    • X, Y, Z 軸方向の大きさそれぞれを無限大に設定します。破壊的メソッドです。
  • gap -> float, gap = float

    • ギャップを取得・設定します。
  • openxmin? -> bool, openymin? -> bool, openzmin? -> bool, openxmax? -> bool, openymax? -> bool, openzmax? -> bool

    • X, Y, Z 軸方向の範囲の最小値・最大値のそれぞれについて、無限大であれば真を返します。
  • openxmin! -> nil, openymin! -> nil, openzmin! -> nil, openxmax! -> nil, openymax! -> nil, openzmax! -> nil

    • X, Y, Z 軸方向の範囲の最小値・最大値のそれぞれについて、無限大に設定します。破壊的メソッドです。
  • xthin?(tol) -> bool, ythin?(tol) -> bool, zthin?(tol) -> bool

    • X, Y, Z 軸方向のそれぞれの範囲の大きさが、tol で指定したトレランス以下の場合、真を返します。
  • center -> [x, y, z]

    • バウンディングボックスの中心座標を取得します。いずれかの軸方向の範囲が無限大だった場合、値は保証されません。
  • xsize -> float, ysize -> float, zsize -> float

    • バウンディングボックスの各軸方向の大きさを取得します。いずれかの軸方向の範囲が無限大だった場合、値は保証されません。
  • out?(BndBox) -> bool

    • 指定したバウンディングボックスがこのバウンディングボックスの外にあるかどうかを取得します。一部でも重なっていれば偽を返します。
  • to_s -> String, inspect -> String

    • 保持している情報を人間が読める文字列にします。
  • dist(BndBox) -> float

    • 指定されたバウンディングボックスとの最短距離を取得します。
  • square -> float

    • このバウンディングボックスの対角線の距離を取得します。

Clone this wiki locally