6章 幾何ライブラリ
著者:梅谷 武
語句:幾何ライブラリ, 幾何計算, 群論的作図法, 作図支援, 弧, 円, 等角, 等辺, 直角, 有向線分
ハミルトン流のポーランド記法を使ったベクトル・四元数計算とLua拡張命令による描画機能を組み合わせた幾何ライブラリの仕様を記す。
作成:2010-07-29
更新:2011-03-08
Vector3 = Vector3 + Vector3
Vector3 = Vector3 - Vector3
Vector3 = - Vector3
Vector3 = number * Vector3
Vector3 = Vector3 * number
Quaternion = Vector3 * Vector3
Quaternion = Vector3 * Quaternion
Vector3 = Vector3 / number
Quaternion = Vector3 / Vector3
new( w, x, y, z ) 要素
new( number ) スカラー
new( Vector3 ) ベクトル
new( number, Vector3 ) 角度と軸
new( EulerAngles ) オイラー角による回転に対応する四元数
Quaternion = Quaternion + Quaternion
Quaternion = Quaternion - Quaternion
Quaternion = - Quaternion
Quaternion = number * Quaternion
Quaternion = Quaternion * number
Quaternion = Vector3 * Quaternion
Quaternion = Quaternion * Vector3
Quaternion = Quaternion * Quaternion
Quaternion = Quaternion / Quaternion
Quaternion = Quaternion / number
number = S( Quaternion ) スカラー
Vector3 = V( Quaternion ) ベクトル
number = T( number ) テンソル(ノルム)
number = T( Vector3 ) テンソル(ノルム)
number = T( Quaternion ) テンソル(ノルム)
Quaternion = K( Quaternion ) 共役
Vector3 = U( Vector3 ) ベルソル
Quaternion = U( Quaternion ) ベルソル
number = Angle( Quaternion ) 角度
Vector3 = Axis( Quaternion ) 軸
Quaternion = Slerp( Quaternion, Quaternion, number ) 球面線形補間
( m11, m12, m13, m21, m22, m23, m31, m32, m33 )
new( m11, m12, m13, m21, m22, m23, m31, m32, m33 ) 要素
new( EulerAngles ) オイラー角による回転行列
new( Quaternion ) 四元数による回転行列
Matrix3x3 = Matrix3x3 + Matrix3x3
Matrix3x3 = Matrix3x3 - Matrix3x3
Matrix3x3 = - Matrix3x3
Matrix3x3 = number * Matrix3x3
Matrix3x3 = Matrix3x3 * number
Vector3 = Matrix3x3 * Vector3
Matrix3x3 = Matrix3x3 * Matrix3x3
Matrix3x3 = Matrix3x3 / number
new( yaw, pitch, roll ) ヨー・ピッチ・ロール
new( Matrix3x3 ) 回転行列
new( Quaternion ) 四元数の回転行列
DirectXの各種定数と材質が定義されています。
emerald
jade
obsidian
pearl
ruby
turquoise
brass
bronze
chrome
copper
gold
silver
plastic_black
plastic_cyan
plastic_green
plastic_red
plastic_white
plastic_yellow
rubber_black
rubber_cyan
rubber_green
rubber_red
rubber_white
rubber_yellow
書式
| PushMatrix()
|
機能
| モデリング変換行列を行列スタックに退避する。
|
書式
| PopMatrix()
|
機能
| モデリング変換行列を行列スタックから復帰する。
|
書式
| Translate( x, y, z )
|
座標系
| 右手系
|
機能
| 与えられた移動ベクトルに対応する並進行列を図形に作用させる。
|
書式
| Rotate( angle, x, y, z )
|
座標系
| 右手系
|
機能
| 指定角度[度]の指定回転軸に関する回転行列を図形に作用させる。
|
書式
| RotateX( angle )
|
座標系
| 右手系
|
機能
| 指定角度[度]のX軸に関する回転行列を図形に作用させる。
|
書式
| RotateY( angle )
|
座標系
| 右手系
|
機能
| 指定角度[度]のY軸に関する回転行列を図形に作用させる。
|
書式
| RotateZ( angle )
|
座標系
| 右手系
|
機能
| 指定角度[度]のZ軸に関する回転行列を図形に作用させる。
|
書式
| MultMatrix( 3×3変換行列 )
|
座標系
| 右手系
|
機能
| 指定回転行列を図形に作用させる。
|
書式
| Scale( x, y, z )
|
座標系
| 右手系
|
機能
| 指定係数の拡大縮小を行なう。
|
書式(1)
| Point( 位置, 色 )
|
書式(2)
| Point( 位置, 色, 半径 )
|
書式(3)
| Point( 位置, 色, 半径, 縦分割数 )
|
書式(4)
| Point( 位置, 色, 半径, 縦分割数, 横分割数 )
|
座標系
| 右手系
|
機能
| 指定した位置・色の小球を描く。既定値は半径=0.01、縦分割数=24、横分割数=24。半径、縦分割数、横分割数を指定することができる。
|
書式(1)
| Line( 始点, 終点, 色 )
|
書式(2)
| Line( 始点, 終点, 色, 太さ )
|
書式(3)
| Line( 始点, 終点, 色, 太さ, 破線型H, 破線型L )
|
書式(4)
| Line( 始点, 終点, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
|
座標系
| 右手系
|
機能
| 指定した始点・終点・色の直線を描く。既定値は太さ=0.01、破線型H=0xffff、破線型L=0xffff、破線型係数=1.0。太さ, 破線型H, 破線型L, 破線型係数を指定することができる。破線型は32bitのパターンで1は描画、0は描画しないことを意味する。これを上位16bitと下位16bitに分けて指定する。破線型係数とは破線型を拡大縮小する係数である。
|
書式(1)
| Print( 位置ベクトル, 文字列 )
|
書式(2)
| Print( 位置ベクトル, 文字列, 色 )
|
座標系
| 右手系
|
機能
| 指定位置に指定色の文字列を二次元的に描く。
|
書式(1)
| Arc( 始点, 終点, 分割数, 色 )
|
書式(2)
| Arc( 始点, 終点, 分割数, 色, 太さ )
|
書式(3)
| Arc( 始点, 終点, 分割数, 色, 太さ, 破線型H, 破線型L )
|
書式(4)
| Arc( 始点, 終点, 分割数, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
|
座標系
| 右手系
|
機能
| ともに0でなく、方向が異なり、長さが等しい二つの位置ベクトルが与えられたときに、それらが定める平面上において、原点を中心とするそれらの終点どうしを結ぶ弧を描く。弧は分割数の折れ線で近似される。この折れ線には直線と同じパラメータを設定することができる。
|
書式(1)
| Circle( 始点, 終点, 分割数, 色 )
|
書式(2)
| Circle( 始点, 終点, 分割数, 色, 太さ )
|
書式(3)
| Circle( 始点, 終点, 分割数, 色, 太さ, 破線型H, 破線型L )
|
書式(4)
| Circle( 始点, 終点, 分割数, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
|
座標系
| 右手系
|
機能
| Arc関数と同じ引数で円を描く。
|
書式(1)
| AngleArc( A, B, C, r, 分割数, 色 )
|
書式(2)
| AngleArc( A, B, C, r, 分割数, 色, 太さ )
|
書式(3)
| AngleArc( A, B, C, r, 分割数, 色, 太さ, 破線型H, 破線型L )
|
書式(4)
| AngleArc( A, B, C, r, 分割数, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
|
座標系
| 右手系
|
機能
| 初等幾何作図において角を表す。
|
書式(1)
| ArcCross( A, B, C, r, l, n, 色 )
|
書式(2)
| ArcCross( A, B, C, r, l, n, 色, 太さ )
|
書式(3)
| ArcCross( A, B, C, r, l, n, 色, 太さ, 破線型H, 破線型L )
|
書式(4)
| ArcCross( A, B, C, r, l, n, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
|
座標系
| 右手系
|
機能
| 初等幾何作図において等角を表す。
|
書式(1)
| LineCross( A, B, C, l, n, 色 )
|
書式(2)
| LineCross( A, B, C, l, n, 色, 太さ )
|
書式(3)
| LineCross( A, B, C, l, n, 色, 太さ, 破線型H, 破線型L )
|
書式(4)
| LineCross( A, B, C, l, n, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
|
座標系
| 右手系
|
機能
| 初等幾何作図において等辺を表す。
|
書式(1)
| RightAngle( A, B, C, r, 色 )
|
書式(2)
| RightAngle( A, B, C, r, 色, 太さ )
|
書式(3)
| RightAngle( A, B, C, r, 色, 太さ, 破線型H, 破線型L )
|
書式(4)
| RightAngle( A, B, C, r, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
|
座標系
| 右手系
|
機能
| 初等幾何作図において直角を表す。
|
書式(1)
| Arrow( 始点, 終点, 色 )
|
書式(2)
| Arrow( 始点, 終点, 色, 太さ )
|
書式(3)
| Arrow( 始点, 終点, 色, 太さ, 破線型H, 破線型L )
|
書式(4)
| Arrow( 始点, 終点, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
|
座標系
| 右手系
|
機能
| 有向線分を描く。
|
[度] = Sex2Dec( [度], [分], [秒] ) 60進法から10進法
Vector3([度],[分],[秒]) = Dec2Sex( [度] ) 10進法から60進法
printf( "C言語互換書式文字列" ) Lua出力ダイアログへ文字列表示