最近寫個小游戲,有方塊移動的影片,線性影片顯得有些生硬,想用貝塞爾實作非線性影片。
如這個網址的圖示:http://cubic-bezier.com/#.43,.04,.11,1.42
但是遇到個問題:
上面網站圖示,是以x軸表示時間,y表示移動位置
查到的貝塞爾公式是:

問題1:公式中的t到底是啥?
看起來網站中圖示和公式,好像一個是二維的,一個是一維的。
問題2:可不可以這么理解,上面網址圖示,是兩個貝塞爾公式的結果?
問題3(主要):我想如網站中圖示,代入x值求出對應的y值。應該怎么做?求給個演算法
我主要是想,分別代入0.1 0.2 0.3 ... 1.0,求出影片中方塊的位置,10幀。
uj5u.com熱心網友回復:
貝塞爾曲線的數學原理uj5u.com熱心網友回復:
帖子我看了很多,還是沒弄明白,可能是我數學基礎不行,比較初中畢業沒上了,大神能給個演算法嗎?
uj5u.com熱心網友回復:
PolyBezieruj5u.com熱心網友回復:
您沒有認真看我的描述吧?我不是需要畫曲線,不是需要生存曲線,我需要,指定4個點的x值和y值,代入x值求出對應的y值
如圖:
uj5u.com熱心網友回復:
由給定的點計算Bezier曲線uj5u.com熱心網友回復:
見:三階貝塞爾曲線Interpolator的應用
uj5u.com熱心網友回復:
t --> 時間 比率 速率 密度 etc......貝塞爾曲線不是求點,而是求n的線性組合的方程。
x y --> x + y的線性組合。
貝塞爾方程和n維沒有關系,它是獨立的方程,所以不能通過x求出y。
uj5u.com熱心網友回復:
例如: x = a, x1 = a1bezier :
|x + x1| = (x1 - x)(1 - t)^n + n(x1 - x)t^0 + ....... + (x1 - x)(1 - t)^(n - 1) + n(x1 - x)t^(n + 1) = P(x)
uj5u.com熱心網友回復:
我正好遇到了同樣的問題,搜索到了這個帖子,我想明白了公式 p(t) = (1-t)^3 * P1 + 3t(1-t)^2 * P2 + 3t^2(1-t) * P3 + T^3 * P4的目的是用來繪制曲線的,t范圍是[0-1],
比如當t=0.5的時候p(t)可能為(x=0.2, y=0.8)
樓主想知道的是當x=0.2的時候,求出y=0.8
因為公式 p(t) = (1-t)^3 * P1 + 3t(1-t)^2 * P2 + 3t^2(1-t) * P3 + T^3 * P4可以分為兩個,分別是
坐標點x公式 X(t) = (1-t)^3 * X1 + 3t(1-t)^2 * X2 + 3t^2(1-t) * X3 + T^3 * X4
坐標點Y公式 Y(t) = (1-t)^3 * Y1 + 3t(1-t)^2 * Y2 + 3t^2(1-t) * Y3 + T^3 * Y4
根據坐標點x公式,帶入X(t)=0.2,因為X1, X2, X3, X,4已知, 算一個一元三次方程 可以算出 t等于多少.
把t的值帶入坐標點Y公式算出Y(t)
我還沒有驗證
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/43672.html
標籤:圖形處理/算法
上一篇:如何獲取M.2硬碟的序列號
下一篇:如何判斷串口是否被監控
