3 回答

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊
構(gòu)造4x4變換矩陣而不是四元數(shù)。
不要忘記OpenGL具有列明智矩陣
所以對于
double m[16];
是X
軸向量inm[ 0],m[ 1],m[ 2]
是Y
軸向量inm[ 4],m[ 5],m[ 6]
是Z
軸向量inm[ 8],m[ 9],m[10]
和位置inm[12],m[13],m[14]
該LCS意味著局部坐標(biāo)系(你的三角形或?qū)ο蠡蚱渌?br/>和GCS意味著全球坐標(biāo)系(世界或其他)。
所有
X,Y,Z
矢量都應(yīng)歸一化為單位矢量,否則會發(fā)生縮放。施工
將
Z
軸矢量設(shè)置為三角形法線將位置(LCS原點)設(shè)置為三角形的中點(或其頂點的平均點)
現(xiàn)在你只需要
X
和Y
軸系這是很容易讓
X = any triangle vertex - triangle midpoint
或X = substraction of any 2 vertexes of triangle
必須滿足的唯一條件
X
是它必須位于三角形平面上。
現(xiàn)在Y = X x Z
,叉積將創(chuàng)建垂直于X
和的矢量Z
(其也位于三角形平面中)。現(xiàn)在,將所有這些內(nèi)容放入矩陣中,并將其作為矩陣或任何形式加載到OpenGL
ModelView
。

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊
不知道萬向節(jié)鎖定的含義(我的詞典只知道萬向節(jié)頭),但是如果您想將點對準(zhǔn)/鎖定到三角形(而不僅僅是其平面),則將原點(x0,y0,z0)和一個在每幀或每次迭代中,以相同的方式(相對于三角形)進(jìn)行軸旋轉(zhuǎn)。因此,例如,如果原點是三角形(中點(P0+P1+P2)/3
)的平均頂點,并且X(或Y)軸指向相同的三角形頂點,(P0-((P0+P1+P2)/3))
那么您的半球所處的三角形位置/方向?qū)⑹冀K以相同的方式對齊(即使三角形改變了)形狀)

TA貢獻(xiàn)1868條經(jīng)驗 獲得超4個贊
萬向節(jié)鎖定是一系列旋轉(zhuǎn)(即next_transform = rotate_func(current_transform)
)的一部分,失去了自由度。您要在此處執(zhí)行的操作并不是從數(shù)量上隨時間變化的意義上進(jìn)行輪換。它只是根據(jù)輸入在每一幀生成一個新的變換。
添加回答
舉報