[英]Bezier Curves OpenGL Move 3d Space According to 2d space
在二維平面中,一個點由它的兩個基向量的一個或多個組合定義。 (如果兩個基向量不正交,則可能有更多組合)
要將點投影到三維平面上,您需要將二維向量b1和b2嵌入三維空間並應用平移t (如果需要)。 一般來說,這個矩陣看起來像:
[ b1x b2x tx ]
[ b1y b2y ty ]
[ b1z b2z tz ]
然后將 (x,y, 1 ) 乘以上面的矩陣。 如果乘以 (x,y,0),則忽略平移,這通常不是您想要的。
幸運的是,如果你堅持使用軸對齊的平面,這會簡單得多。 如果我們選擇 z=0 平面,那么基向量是 (1,0,0) 和 (0,1,0),平移是 (0,0,0)。 然后矩陣變為
[ 1 0 0 ]
[ 0 1 0 ]
[ 0 0 0 ]
並且 (x,y,1) 乘以該矩陣就是 (x,y,0)。
換句話說,您可以簡單地執行以下操作:
vec2 bezier_2d = bezier(t);
vec3 bezier_3d = vec3(bezier_2d.x, bezier_2d.y, 0);
vec3 box_pos = original_pos + bezier_3d * scale;
其中bezier(t)
計算給定時間步的貝塞爾函數值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.