6章 幾何ライブラリ
著者:梅谷 武
語句:幾何ライブラリ, 幾何計算, 群論的作図法, 作図支援, 弧, 円, 等角, 等辺, 直角, 有向線分
ハミルトン流のポーランド記法を使ったベクトル・四元数計算とLua拡張命令による描画機能を組み合わせた幾何ライブラリの仕様を記す。
作成:2010-07-29
更新:2011-03-08
( x, y, z )
new( x, y, z )
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
( w, x, y, z )
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
( yaw, pit, rol )
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

SetMaterial

書式 SetMaterial( 材質名 )

PushMatrix

書式 PushMatrix()
機能 モデリング変換行列を行列スタックに退避する。

PopMatrix

書式 PopMatrix()
機能 モデリング変換行列を行列スタックから復帰する。

Translate

書式 Translate( x, y, z )
座標系 右手系
機能 与えられた移動ベクトルに対応する並進行列を図形に作用させる。

Rotate

書式 Rotate( angle, x, y, z )
座標系 右手系
機能 指定角度[度]の指定回転軸に関する回転行列を図形に作用させる。

RotateX

書式 RotateX( angle )
座標系 右手系
機能 指定角度[度]のX軸に関する回転行列を図形に作用させる。

RotateY

書式 RotateY( angle )
座標系 右手系
機能 指定角度[度]のY軸に関する回転行列を図形に作用させる。

RotateZ

書式 RotateZ( angle )
座標系 右手系
機能 指定角度[度]のZ軸に関する回転行列を図形に作用させる。

MultMatrix

書式 MultMatrix( 3×3変換行列 )
座標系 右手系
機能 指定回転行列を図形に作用させる。

Scale

書式 Scale( x, y, z )
座標系 右手系
機能 指定係数の拡大縮小を行なう。

Point

書式(1) Point( 位置, 色 )
書式(2) Point( 位置, 色, 半径 )
書式(3) Point( 位置, 色, 半径, 縦分割数 )
書式(4) Point( 位置, 色, 半径, 縦分割数, 横分割数 )
座標系 右手系
機能 指定した位置・色の小球を描く。既定値は半径=0.01、縦分割数=24、横分割数=24。半径、縦分割数、横分割数を指定することができる。

Line

書式(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に分けて指定する。破線型係数とは破線型を拡大縮小する係数である。

Print

書式(1) Print( 位置ベクトル, 文字列 )
書式(2) Print( 位置ベクトル, 文字列, 色 )
座標系 右手系
機能 指定位置に指定色の文字列を二次元的に描く。

Arc

書式(1) Arc( 始点, 終点, 分割数, 色 )
書式(2) Arc( 始点, 終点, 分割数, 色, 太さ )
書式(3) Arc( 始点, 終点, 分割数, 色, 太さ, 破線型H, 破線型L )
書式(4) Arc( 始点, 終点, 分割数, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
座標系 右手系
機能 ともに0でなく、方向が異なり、長さが等しい二つの位置ベクトルが与えられたときに、それらが定める平面上において、原点を中心とするそれらの終点どうしを結ぶを描く。弧は分割数の折れ線で近似される。この折れ線には直線と同じパラメータを設定することができる。

Circle

書式(1) Circle( 始点, 終点, 分割数, 色 )
書式(2) Circle( 始点, 終点, 分割数, 色, 太さ )
書式(3) Circle( 始点, 終点, 分割数, 色, 太さ, 破線型H, 破線型L )
書式(4) Circle( 始点, 終点, 分割数, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
座標系 右手系
機能 Arc関数と同じ引数でを描く。

AngleArc

書式(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, 破線型係数 )
座標系 右手系
機能 初等幾何作図において角を表す。

ArcCross

書式(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, 破線型係数 )
座標系 右手系
機能 初等幾何作図において等角を表す。

LineCross

書式(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, 破線型係数 )
座標系 右手系
機能 初等幾何作図において等辺を表す。

RightAngle

書式(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, 破線型係数 )
座標系 右手系
機能 初等幾何作図において直角を表す。

Arrow

書式(1) Arrow( 始点, 終点, 色 )
書式(2) Arrow( 始点, 終点, 色, 太さ )
書式(3) Arrow( 始点, 終点, 色, 太さ, 破線型H, 破線型L )
書式(4) Arrow( 始点, 終点, 色, 太さ, 破線型H, 破線型L, 破線型係数 )
座標系 右手系
機能 有向線分を描く。
[度] = Sex2Dec( [度], [分], [秒] )		60進法から10進法
Vector3([度],[分],[秒]) = Dec2Sex( [度] )	10進法から60進法
printf( "C言語互換書式文字列" )			Lua出力ダイアログへ文字列表示
Published by SANENSYA Co.,Ltd.