Skip to content
Daisuke YAMAGUCHI edited this page Nov 26, 2015 · 47 revisions

要約

ベクトルを扱うためのクラスです。これは Open CASCADE の gp_Vec クラスの機能をラッピングしたクラスであり、Ruby の Vector クラスとは別のものです。 Open CASCADE の gp_Vec クラスに相当するものです。

特異メソッド

  • new([x, y, z]) -> Vec

    • Vec オブジェクトを作成します。 引数を省略すると、 [0, 0, 0] の要素を持つベクトルが作成されます。
  • zero -> Vec, origin -> Vec

    • [0, 0, 0] の要素のベクトルを返します。
  • xdir -> Vec, ydir -> Vec, zdir -> Vec

    • それぞれ [1, 0, 0], [0, 1, 0], [0, 0, 1] の要素のベクトルを返します。

インスタンスメソッド

  • self == other -> bool

    • ベクトル同士を比較し、同一であれば真を返します。トレランスを用いたより柔軟な比較は Vec.equal? メソッドを用います。
  • self + other -> Vec

    • ベクトル同士の和を返します。
  • self - other -> Vec

    • ベクトル同士の差を返します。
  • -self -> Vec

    • 反転ベクトルを返します。
  • self * float -> Vec

    • ベクトルの各要素をスカラー倍したものを返します。
  • self / float -> Vec

    • ベクトルの各要素をスカラー値で割ったものを返します。
  • inspect -> String, to_s -> String

    • Vec オブジェクトが保持している要素を人間が読める文字列にして返します。
  • x -> float, x=float

    • X の値を取得、設定します。
  • y -> float, y=float

    • Y の値を取得、設定します。
  • z -> float, z=float

    • Z の値を取得、設定します。
  • to_a -> nil, to_ary -> nil, xyz -> nil

    • ベクトルを X, Y, Z の要素を並べた Array オブジェクトにして返します。
  • equal?(Vec, liner_tol, anguler_tol) -> bool

    • 与えられたベクトルとトレランスを用い比較し、同一であれば真を返します。
  • normal?(Vec, anguler_tol) -> bool

    • 与えられたベクトルがこのベクトルの単位ベクトルであれば真を返します。
  • normal -> Vec

    • 正規化したベクトルを返します。
  • normal! -> self

    • ベクトルを正規化します。破壊的メソッドです。
  • parallel?(Vec, angular_tol) -> bool

    • 与えられたベクトルがこのベクトルと平行であれば真を返します。
  • reverse?(Vec, anguler_tol) -> bool

    • 与えられたベクトルがこのベクトルに反転していれば真を返します。
  • reverse -> Vec

    • 反転ベクトルを返します。
  • reverse! -> self

    • 反転します。破壊的メソッドです。
  • angle(Vec) -> float

    • 与えられたベクトルへの角度をラジアンで返します。戻り値の範囲は 0 ~ PI です。
  • angleref(Vec, VRef) -> float

    • 与えられたベクトルへの角度を VRef ベクトルを基準としてラジアンで返します。戻り値の範囲は -PI ~ PI です。
  • magnitude -> nil, size -> nil, length -> nil

    • ベクトルの大きさを返します。
  • cross(Vec) -> Vec

    • 与えられたベクトルとの外積(クロス積)ベクトルを取得します。
  • cross!(Vec) -> self

    • このベクトルを与えられたベクトルとの外積(クロス積)ベクトルにします。
  • dot(Vec) -> float

    • 与えられたベクトルとの内積を取得します。
  • dot_cross(Vec1, Vec2) -> float

  • cross_cross(Vec1, Vec2) -> Vec

  • cross_cross!(Vec1, Vec2) -> self

  • cross_mag -> float

  • cross_square_mag -> float

  • square_mag -> float

  • mirror(Vec) -> Vec

    • 与えられたベクトル方向にこのベクトルを反転させたベクトルを返します。
  • mirror!(Vec) -> self

    • 与えられたベクトル方向にこのベクトルを反転させます。破壊的メソッドです。
  • rotate(Vec, angle) -> Vec

    • 与えられたベクトルを回転軸とし、angle 分回転させたベクトルを返します。
  • rotate!(Vec, angle) -> self

    • 与えられたベクトルを回転軸とし、angle 分回転させます。破壊的メソッドです。
  • scale(factor) -> Vec

    • 与えられた倍数で拡縮を行なったベクトルを返します。
  • scale!(factor) -> self

    • 与えられた倍数で拡縮を行います。破壊的メソッドです。
  • transform(Trans) -> Vec

    • 与えられた Trans オブジェクトの行列情報を用いて回転・反転・拡縮を行なったベクトルを返します。
  • transform!(Trans) -> self

    • 与えられた Trans オブジェクトの行列情報を用いて回転・反転・拡縮を行います。破壊的メソッドです。

備考

  • ベクトルは「位置」を持たないため、トランスフォーメーション系メソッドに translate メソッドは存在しません。また、それ以外のトランフォーメーション系メソッドでも、Shape オブジェクトのように位置を指定する引数はありません。

Clone this wiki locally