NatureUtil¶
自然表現用ユーティリティクラス
Constructors¶
new NatureUtil()¶
new NatureUtil():
NatureUtil
Returns¶
Properties¶
DEG2RAD¶
staticreadonlyDEG2RAD:number=0.017453292519943
RAD2DEG¶
staticreadonlyRAD2DEG:number=57.29577951308232
epsilon¶
staticreadonlyepsilon:number=0.000001
Methods¶
calcTrianglesCenterBBoxArea()¶
staticcalcTrianglesCenterBBoxArea(vertices,indices,stride,offset,origin):number[]
三角板配列の中心、BBox、面積の計算 AbstractPolygonEntity.PrimitiveProducer.UpdatePrimitiveMesh(), AbstarctPolygonEntity.FlakePrimitiveProducer() の vertices, indices 三角板配列から計算
Parameters¶
| Parameter | Type | Description |
|---|---|---|
vertices |
Float32Array<ArrayBufferLike> |
三角板頂点配列 |
indices |
Uint32Array<ArrayBufferLike> |
インデックス配列 |
stride |
number |
三角板頂点配列の頂点ストライド |
offset |
number |
三角板頂点配列の頂点オフセット |
origin |
Vector3 |
vertices の原点座標 |
Returns¶
number[]
[center_x, center_y, center_z, min_x, min_y, min_z, max_x, max_y, max_z, area_sum]
calcWaveVectorInMLOCS()¶
staticcalcWaveVectorInMLOCS(angle_degree,scale,dst):Vector3
MLOCS座標系での波の方向をx軸からの角度で生成する
Parameters¶
| Parameter | Type |
|---|---|
angle_degree |
number |
scale |
number |
dst |
Vector3 |
Returns¶
createAlignedNeighborGOCS()¶
staticcreateAlignedNeighborGOCS(align_size,vec):Vector3
AlignSize単位の格子点集合の中で入力座標の近傍の座標(floorで得られる格子点)を返す
Parameters¶
| Parameter | Type |
|---|---|
align_size |
number |
vec |
Vector3 |
Returns¶
createViewToAlignGOCS()¶
staticcreateViewToAlignGOCS(align_size,view_to_gocs,model_to_gocs,dst):Matrix
view_to_gocs と obj_to_gocs から obj 用 viwe_to_aligned_gocs を作成
vx^g : GOCS成分で書かれたViewCSのx基底ベクトル vy^g : GOCS成分で書かれたViewCSのy基底ベクトル vz^g : GOCS成分で書かれたViewCSのz基底ベクトル vo^g : GOCS成分で書かれたViewCSの原点ベクトル
(vx.x^g vy.x^g vz.x^g vo.x^g)
view_to_gocs = (vx.y^g vy.y^g vz.y^g vo.y^g) (vx.z^g vy.z^g vz.z^g vo.z^g) ( 0 0 0 1)
gm^ag : モデル原点近傍のAlignGOCS格子点 = createAlignNeighborGOCS( A, mo^g );
(ret[0] ret[4] ret[ 8] ret[12]) = (vx.x^g vy.x^g vz.x^g vo.x^g - gm^ag) (ret[1] ret[5] ret[ 9] ret[13]) = (vx.y^g vy.y^g vz.y^g vo.y^g - gm^ag) (ret[2] ret[6] ret[10] ret[14]) = (vx.z^g vy.z^g vz.z^g vo.z^g - gm^ag) (ret[3] ret[7] ret[11] ret[15]) = ( 0 0 0 1)
Parameters¶
| Parameter | Type |
|---|---|
align_size |
number |
view_to_gocs |
Matrix |
model_to_gocs |
Matrix |
dst |
Matrix |
Returns¶
createVolumePlane()¶
staticcreateVolumePlane(camera):Vector4[]
視錘台の VolumePlane を取得 ViewCS (XcWc) = ( ( 2n)/(r-l) 0 (r+l)/(r-l) 0 )(Xw) (YcWc) ( 0 ( 2n)/(t-b) (t+b)/(t-b) 0 )(Yw) (ZcWc) ( 0 0 -(f+n)/(f-n) -(2fn)/(f-n) )(Zw) ( Wc) ( 0 0 -1 0 )( 1)
(XcWc) = ( m[00] m[01] m[02] m[03] )(Xw) (YcWc) ( m[10] m[11] m[12] m[13] )(Yw) (ZcWc) ( m[20] m[21] m[22] m[23] )(Zw) ( Wc) ( m[30] m[31] m[32] m[33] )( 1)
(XcWc) = ( m[ 0] m[ 4] m[ 8] m[12] )(Xw) (YcWc) ( m[ 1] m[ 5] m[ 9] m[13] )(Yw) (ZcWc) ( m[ 2] m[ 6] m[10] m[14] )(Zw) ( Wc) ( m[ 3] m[ 7] m[11] m[15] )( 1)
near = (m[ 3] + m[ 2], m[ 7] + m[ 6], m[11] + m[10], m[15] + m[14]) = (0, 0, -1 + (-(f+n)/(f-n)), 0 + (-(2fn)/(f-n))) = (0, 0, -1 - (f+n)/(f-n)), -(2fn)/(f-n)) = (0, 0, -(f-n)/(f-n) - (f+n)/(f-n)), -(2fn)/(f-n)) = -(2f/(f-n))(0, 0, 1, n)
far = (m[ 3] - m[ 2], m[ 7] - m[ 6], m[11] - m[10], m[15] - m[14]) = (0, 0, -1 - (-(f+n)/(f-n)), -(-(2fn)/(f-n)) ) = (0, 0, -(f-n)/(f-n) + (f+n)/(f-n)), (2fn)/(f-n) ) = (0, 0, (2n)/(f-n)), (2fn)/(f-n) ) = (2n/(f-n))(0, 0, 1, f)
left = (m[ 3] + m[ 0], m[ 7] + m[ 4], m[11] + m[ 8], m[15] + m[12]) = (0 + ( 2n)/(r-l), 0 + 0, -1 + (r+l)/(r-l), 0 + 0) = ((2n)/(r-l), 0, -(r-l)/(r-l) + (r+l)/(r-l), 0) = ((2n)/(r-l), 0, (2l)/(r-l), 0) = (2/(r-l))(n, 0, l, 0)
right= (m[ 3] - m[ 1], m[ 7] - m[ 5], m[11] - m[ 9], m[15] - m[13]) = (0 - 0, 0 - 0, -1 - (r+l)/(r-l), 0 - 0) = (-(2n)/(r-l), 0, -(r-l)/(r-l) - (r+l)/(r-l), 0) = (-(2n)/(r-l), 0, -(2r)/(r-l), 0) = -(2/(r-l))(n, 0, r, 0)
bottom= (m[ 3] + m[ 0], m[ 7] + m[ 4], m[11] + m[ 8], m[15] + m[12]) = (0 + 0, 0 + ( 2n)/(t-b), -1 + (t+b)/(t-b), 0 + 0) = (0, (2n)/(t-b), -(t-b)/(t-b) + (t+b)/(t-b), 0) = (0, (2n)/(t-b), (2b)/(t-b), 0) = (2/(t-b))(0, n, b, 0)
top = (m[ 3] - m[ 0], m[ 7] - m[ 4], m[11] - m[ 8], m[15] - m[12]) = (0 - 0, 0 - ( 2n)/(t-b), -1 - (t+b)/(t-b), 0 - 0) = (0, -(2n)/(t-b), -(t-b)/(t-b) - (t+b)/(t-b), 0) = (0, -(2n)/(t-b), -(2t)/(t-b), 0) = -(2/(t-b))(0, n, t, 0)
Parameters¶
| Parameter | Type |
|---|---|
camera |
Camera |
Returns¶
Vector4[]
getMoveFromMatrix()¶
staticgetMoveFromMatrix(m):Vector3
Matrix 第 4 列から移動ベクトルを取得
(m00 m01 m02 m03) (m[ 0] m[ 4] m[ 8] m[12]) (m10 m11 m12 m13) = (m[ 1] m[ 5] m[ 9] m[13]) (m20 m21 m22 m32) (m[ 2] m[ 6] m[10] m[14]) (m30 m31 m32 m33) ( 0 0 0 1)
Parameters¶
| Parameter | Type |
|---|---|
m |
Matrix |
Returns¶
getWaveVectorInModelCS()¶
staticgetWaveVectorInModelCS(pos_model,model_to_gocs,wave_mlocs,dst):Vector3
MLOCS座標系での波の方向からモデル座標系での波の方向を計算する
Parameters¶
| Parameter | Type |
|---|---|
pos_model |
Vector3 |
model_to_gocs |
Matrix |
wave_mlocs |
Vector3 |
dst |
Vector3 |
Returns¶
isMatrixSame()¶
staticisMatrixSame(m0,m1):boolean
Matrix 第 4 列に移動ベクトルをセット
(m00 m01 m02 m03) (m[ 0] m[ 4] m[ 8] m[12]) (m10 m11 m12 m13) = (m[ 1] m[ 5] m[ 9] m[13]) (m20 m21 m22 m32) (m[ 2] m[ 6] m[10] m[14]) (m30 m31 m32 m33) ( 0 0 0 1)
Parameters¶
| Parameter | Type |
|---|---|
m0 |
Matrix |
m1 |
Matrix |
Returns¶
boolean
isZero()¶
staticisZero(x):boolean
epsilonを考慮したゼロ判定
Parameters¶
| Parameter | Type |
|---|---|
x |
number |
Returns¶
boolean
setMoveToMatrix()¶
staticsetMoveToMatrix(m,mov):Matrix
Matrix 第 4 列に移動ベクトルをセット
(m00 m01 m02 m03) (m[ 0] m[ 4] m[ 8] m[12]) (m10 m11 m12 m13) = (m[ 1] m[ 5] m[ 9] m[13]) (m20 m21 m22 m32) (m[ 2] m[ 6] m[10] m[14]) (m30 m31 m32 m33) ( 0 0 0 1)
Parameters¶
| Parameter | Type |
|---|---|
m |
Matrix |
mov |
Vector3 |