![](/img/trans.png)
[英]Which are the control points to create (approximate) a circle using 8 cubic bezier curves
[英]Circle approximations using Bezier curves
我有2個關於貝塞爾曲線的問題,並使用它們來近似圓的部分。
給定單位圓弧(1,0) - >(cos(a),sin(a)),其中0 <a <pi / 2,它將導致該弧的良好近似,以找到貝塞爾曲線的控制點p1 ,p2通過求解要求B(1/3)=(cos(a / 3),sin(a / 3))和B(2/3)=(cos(2a / 3),sin(圖2a / 3))。 (換句話說,要求貝塞爾曲線穿過弧中兩個均勻間隔的點)。
如果我們有一個仿射變換A,它將圓弧轉成橢圓弧,變換后的控制點Ap0,Ap1,Ap2,Ap3是否定義了橢圓弧的良好貝塞爾近似?
當然,p0和p3是曲線的起點和終點:(1,0)和(cos(a),sin(a))。
謝謝
你的問題基本上問“這是半圓形/橢圓弧的良好近似”。
您可能想要嘗試計算B_y(a) - sin(a)
(當然,將參數化方程式設置為兩端以(-1,0)
結束於a
的相同值)對於曲線B(a)
,在圖形上諸如Wolfram Alpha之類的實用程序可以對其進行繪圖 ,並查看差異的大小,以及它是否適合您的目的。
如果您想要更精確和非直觀的答案,您可以計算
Integral (from 0 to K) [B_y(a) - sin(a)]^2 da / 2
其中K是兩個參數化曲線最終為(-1,0)
的a
的值。
該積分與標准偏差的某些測量值相關/比例(稍微),並且將很好地用作數值分析。 如果它在您期望的准確度范圍內,那么您就是好的。
如果你的轉換基本上是線性的,你的第二個問題,你提到一個圓與一個橢圓的仿射變換,將給你一個與你的原始誤差成比例的誤差。 如果沒有,您可以嘗試使用轉換的雅可比行列式來查看錯誤的變化情況。
我還發現了一個很好的半圓形Bezier逼近分析,作者發現了一個非常性感的近似值:
鑒於:
xValueInset = Diameter * 0.05 yValueOffset = radius * 4.0 / 3.0 P0 = (0,0) P1 = (xValueInset, yValueOffset) P2 = (Diameter - xValueInset, yValueOffset) P3 = (Diameter, 0)
P1和P2是你的控制點。 請注意,這近似於半圓:
B(a) = [ (d/2)*cos(a)+d/2 , (d/2)*sin(a) ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.