二次贝塞尔曲线转换为三次贝塞尔曲线
二次貝塞爾曲線轉(zhuǎn)換為三次貝塞爾曲線
在使用cairo繪圖的時候,發(fā)現(xiàn)cairo不支持二次貝塞爾曲線的繪制,為了與QT實現(xiàn)的canvas的行為一致,cairo必須同樣實現(xiàn)二次貝塞爾曲線的繪制。思路是將二次轉(zhuǎn)換成三次,然后用3次的方式繪制。
二次貝塞爾曲線公式
Q(t) = Q0 (1-t)2 + 2 Q1 (1-t) t + Q2 t2
三次貝塞爾曲線公式
Q(t) = Q0 (1-t)2 + 2 Q1 (1-t) t + Q2 t2
公式推導(dǎo)過程
將二次貝塞爾曲線轉(zhuǎn)換成三次貝塞爾曲線,必須要讓這兩個多項式相等,它們的多項式系數(shù)必須相等。
通過展開表達(dá)式:(1-t)2= 1- 2t + t2),然后把所有的項分解成1、t、t2和t3,得到多項式系數(shù):
Q(t) = Q0 + (-2Q0 + 2Q1) t + (Q0 - 2Q1 + Q2) t2
C(t) = C0 + (-3C0 + 3C1) t + (3C0 - 6C1 + 3C2) t2 + (-C0 + 3C1 -3C2 + C3) t3
因此,可以得到以下4個方程:
C0 = Q0
-3C0 + 3C1 = -2Q0 + 2Q1
3C0 - 6C1 + 3C2 = Q0 - 2Q1 + Q2
-C0 + 3C1 -3C2 + C3 = 0
將第二行中的C0代入Q0就可以解出C1,得到:
C1 = Q0 + (2/3) (Q1 - Q0)
然后,可以繼續(xù)代入求出C2然后求出C3,或者簡單地說,通過對稱性,得出結(jié)論:
C0 = Q0
C1 = Q0 + (2/3) (Q1 - Q0)
C2 = Q2 + (2/3) (Q1 - Q2)
C3 = Q2
總結(jié)
以上是生活随笔為你收集整理的二次贝塞尔曲线转换为三次贝塞尔曲线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 节能prru进入深度休眠节能_打印机深度
- 下一篇: uniapp 微信小程序分享海报