को देखते हुए:
- नियंत्रण बिंदुओं p0, P1, P2
- समय टी
बिंदु बी p0, p1 द्वारा वर्णित द्विघात बेज़ियर वक्र पर बिंदु, और समय टी पर पी 2।
q0 समय टी पर पी 0 और पी 1 द्वारा वर्णित रैखिक बेजियर वक्र पर बिंदु है।
q1 समय टी पर पी 1 और पी 2 द्वारा वर्णित रैखिक बेजियर वक्र पर बिंदु है।
Q0 और Q1 के बीच की रेखा खंड बिंदु बी
इसलिए में अपने द्विघात बेज़ियर वक्र को स्पर्श रेखा होती है, समय टी पर बेज़ियर वक्र के कोण Q0 और Q1 के बीच की रेखा खंड की ढलान के बराबर है।
विकिपीडिया में lovely gif इसका प्रदर्शन करता है। ब्लैक डॉट बिंदु बी है, और हरी रेखा खंड के अंत बिंदु q0 और q1 हैं।
सिद्धांत उच्च आयामों के बेजियर वक्र के समान है। एन-डिग्री बेजियर वक्र पर किसी बिंदु के कोण को खोजने के लिए, q0 और q1 खोजें, जो नियंत्रण बिंदुओं के लिए एन -1 डिग्री-डिग्री बेजियर वक्र पर बिंदु हैं [p0, p1, ..., p (N-1)] और [पी 1, पी 2, ..., पीएन]। कोण q0-q1 लाइन सेगमेंट की ढलान के बराबर है।
स्यूडोकोड में:
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)
आप गणित कर रहे हैं बिंदु ही प्राप्त करने के लिए, आप क्यों नहीं ले सकते ढलान खोजने के लिए व्युत्पन्न? फिर कोण खोजने के लिए atan2 ले लो? बीज़र घटता से बहुत परिचित नहीं है, इसलिए यह वास्तविक जवाब नहीं बना रहा है –