verilen: p2
- kontrol noktası P0, P1,
- süresi t
B noktası P0, P1 tarafından tarif edilen ikinci dereceden Bezier eğrisi üzerindeki nokta, ve p2 zamanda t.
q0, t zamanında p0 ve p1 tarafından açıklanan doğrusal bezier eğrisindeki noktadır.
q1, t zamanında p1 ve p2 tarafından açıklanan doğrusal bezier eğrisindeki noktadır. Q0 ve q1 arasında
çizgi parçasının Bu nedenle B noktasına
de ikinci dereceden Bezier eğrisine teğet olan, zaman t Bezier eğrisinin açısı Q0 ve q1 arasındaki çizgi parçasının eğimi eşittir.
Wikipedia bunu lovely gif göstermektedir. Siyah nokta B noktasıdır ve yeşil çizgi segmentinin uç noktaları q0 ve q1'dir.
Prensip, daha yüksek boyutlardaki bezier eğrileri için aynıdır. N dereceli bir bezier eğrisindeki bir noktanın açısını bulmak için, kontrol noktaları için N-1 derece bezier eğrilerindeki noktalar olan q0 ve q1 öğelerini bulun [p0, p1, ..., p (N-1)] ve [p1, p2, ..., pN]. Açı q0-q1 çizgi segmentinin eğimine eşittir. pseudocode
:
def bezierCurve(controlPoints, t):
if len(controlPoints) == 1:
return controlPoints[0]
else:
allControlPointsButTheLastOne = controlPoints[:-1]
allControlPointsButTheFirstOne = controlPoints[1:]
q0 = bezierCurve(allControlPointsButTheLatOne, t)
q1 = bezierCurve(allControlPointsButTheFirstOne, t)
return (1-t) * q0 + t * q1
def bezierAngle(controlPoints, t):
q0 = bezierCurve(controlPoints[:-1], t)
q1 = bezierCurve(controlPoints[1:], t)
return math.atan2(q1.y - q0.y, q1.x - q0.x)
, eğimi bulmak için türev? sonra açıyı bulmak için atan2'yi mi aldınız? Beizer eğrilerine çok fazla aşina değil, bu yüzden gerçek bir cevap vermiyor –