1
如何獲得Kinetic.Spline的樣條點的切線。我正在使用KineticJS 4.7.2。在kineticjs中獲取樣條點的切線
到目前爲止,沒有找到任何方法爲我提供這個方法。
非常感謝,曼努埃爾
如何獲得Kinetic.Spline的樣條點的切線。我正在使用KineticJS 4.7.2。在kineticjs中獲取樣條點的切線
到目前爲止,沒有找到任何方法爲我提供這個方法。
非常感謝,曼努埃爾
動力學花鍵是二次/ Bezier曲線的組合(除非張力== 0)
因此可以近似切線在至少2各花鍵點方法。
的粗略估計是4個步驟:
更好的近似是更復雜:
獲取沿曲線
XY點,這些功能將幫助您相處的二次或三次Bezier曲線的XY。
如果T = 0.00,該點將在曲線的一開始。
如果T == 1.00,該點將位於曲線的最後。
// quadratic bezier: T is 0-1
function getQuadraticBezierXYatT(startPt,controlPt,endPt,T) {
var x = Math.pow(1-T,2) * startPt.x + 2 * (1-T) * T * controlPt.x + Math.pow(T,2) * endPt.x;
var y = Math.pow(1-T,2) * startPt.y + 2 * (1-T) * T * controlPt.y + Math.pow(T,2) * endPt.y;
return({x:x,y:y});
}
// cubic bezier T is 0-1
function getCubicBezierXYatT(startPt,controlPt1,controlPt2,endPt,T){
var x=CubicN(T,startPt.x,controlPt1.x,controlPt2.x,endPt.x);
var y=CubicN(T,startPt.y,controlPt1.y,controlPt2.y,endPt.y);
return({x:x,y:y});
}
// cubic helper formula at T distance
function CubicN(pct, a,b,c,d) {
var t2 = pct * pct;
var t3 = t2 * pct;
return a + (-a * 3 + pct * (3 * a - a * pct)) * pct
+ (3 * b + pct * (-6 * b + b * 3 * pct)) * pct
+ (c * 3 - c * 3 * pct) * t2
+ d * t3;
}
如果你需要參考KineticJS源代碼樣條線,那就是:
這確實是一個很好的研究答案。 – tetris11