二階貝塞爾曲線長度的計算

2021-10-09 22:51:11 字數 1956 閱讀 1568

祝大家國慶中秋快樂!

當乙隻單身狗,就需要有單身狗的覺悟——不要滿世界的找**吃!

作為u3d菜鳥,最近專案中遇到乙個需求——做勻速曲線運動!基於以前對貝塞爾曲線的認識,無法滿足需求,就想繼續了解一下!

歷史略過,乾貨開始!

這裡介紹的很詳細了,本人在幾何上的理解如下,比套公式容易理解多了:

private vector3 generatepoint

(float t, vector3 veca, vector3 vecb)

對於二階三階n階

//二階

private vector3 generatepoint2

(float t, vector3 veca, vector3 vecb, vector3 vecc)

//三階

private vector3 generatepoint3

(float t, vector3 veca, vector3 vecb, vector3 vecc,vector3 vecd)

每一階都會降到下一階,這是個遞迴的過程,一直遞迴到只剩下乙個點,那個點就是t時所求的點!對於n階貝塞爾曲線,就不用贅述了吧!

專案本來使用的是三階貝塞爾曲線,但是求三階貝塞爾曲線長度,其中難點如下:

f (x

)=∫0

1ax4

+bx3

+cx2

+dx+

edxf\left ( x \right )=\int_^\sqrt+bx^+cx^+dx+e}dx

f(x)=∫

01​a

x4+b

x3+c

x2+d

x+e​dx(

x)=∫

01ax

2+bx

+cdx

=18a

32[2

a(2a

x+b)

ax2+

bx+c

−(b2

−4ac

)ln(

2aax

2+bx

+c+2

ax+b

)]f\left ( x \right )=\int_^\sqrt+bx+c}dx\\=\frac}}\left [ 2\sqrt\left ( 2ax+b \right )\sqrt+bx+c}-\left ( b^-4ac \right )ln\left(2\sqrt\sqrt+bx+c}+2ax+b \right ) \right ]

f(x)=∫

01​a

x2+b

x+c​

dx=8

a23​

1​[2

a​(2

ax+b

)ax2

+bx+

c​−(

b2−4

ac)l

n(2a

​ax2

+bx+

c​+2

ax+b

)]這個公式也是挺長的了!下面我們在**中實現求二階貝塞爾曲線長度(常數項=0)!

private float

calculatecalculusvalue

(float t, vector2 veca, vector2 vecb, vector2 vecc)

//曲線長度

對於這個公式,不建議直接套用,他的常數項就是前面t=0時的積分,對於多次求t時刻的長度,就會多次計算!這裡就是直接套用該公式的,不過可以用它來檢驗執行結果!

Canvas 畫貝塞爾曲線(二階曲線和三階曲線)

效果圖為動態圖,乙個小圓點沿著曲線運動,並顯示實時點座標。二階 三階 一 實現思路 1.用兩個canvas實現,乙個繪製曲線,乙個繪製運動圓點。2.繪製曲線 可以通過canvas提供的api方法繪製。二階 quadraticcurveto controlx,controly,endingpointx...

三階貝塞爾曲線公式計算座標

1.valueanimator通過animatorset去play valueanimator valueanimator getbesselanimator tempimageview,rankwidth,rankheight animatorset animatorset new animato...

演算法 N階貝塞爾曲線程式設計

最近在研究捕魚的路徑點問題。上司要求路徑由幾個貝塞爾曲線的特徵點來生成魚的路徑。倒騰了一會 真沒想到自己寫出來了。也算是自己畢業後寫的第乙個有關遊戲的演算法。寫這篇日誌做乙個筆記。這裡只放出關鍵 首先它肯定需要乙個遞迴呼叫,因為每個比例都要生成乙個點,然而,每次計算都要從n個點計算為n 1個點,最後...