我努力工作,一個簡單的貝塞爾曲線,但我只是不明白的數學背後,如果有人可以給我解釋一下這個簡單的貝塞爾曲線這將是真棒:)貝塞爾曲線計算
我們有
point1
X: 0
Y: 0
point2
X: 100
Y: 100
control point1
X: 0
Y: 100
所以基本上我們有從左上角開始,將獲得由左到100×100像素的正方形的右下角的頂部對角線的線,但現在我想嘗試和拉那線在X位置0和Y位置100的控制點,有人可以向我解釋發生在這裏的簡單數學,如果可能的話,可以用我的值顯示計算:)。
謝謝
P.S.一個基本的圖片
UPDATE
下面是用方程
canvasHolder = document.getElementById('canvas');
canvas = canvasHolder.getContext('2d');
var deltaT = 0.10;
var point1 = new Point(300,300);
var point2 = new Point(400,400);
var controlPoint1 = new Point(100,200);
//Bezier cruve
for(var i = 0; i < 10; i++)
{
var t = (i/10) * 0.1;
var xPos = (1.0 * - t*t) * point1.x + 2.0 * (1 - t) * t * controlPoint1.x + t * t * point2.x;
var yPos = (1.0 * - t*t) * point1.y + 2.0 * (1 - t) * t * controlPoint1.y + t * t * point2.y;
console.log("xPos = " + xPos + ", yPos = " + yPos);
var particle = new Particle("circle", xPos, yPos, 5, "#FF0000", "#333333");
particles[i] = particle;
}
在這裏我簡單的JavaScript代碼爲
xPos = 0, yPos = 0 bezierCurve.js:35
xPos = 1.9900000000000004, yPos = 3.970000000000001 bezierCurve.js:35
xPos = 3.9600000000000004, yPos = 7.880000000000001 bezierCurve.js:35
xPos = 5.909999999999999, yPos = 11.729999999999999 bezierCurve.js:35
xPos = 7.840000000000001, yPos = 15.520000000000001 bezierCurve.js:35
xPos = 9.75, yPos = 19.25 bezierCurve.js:35
xPos = 11.639999999999997, yPos = 22.919999999999998 bezierCurve.js:35
xPos = 13.509999999999996, yPos = 26.529999999999998 bezierCurve.js:35
xPos = 15.360000000000003, yPos = 30.080000000000005 bezierCurve.js:35
xPos = 17.190000000000005, yPos = 33.57000000000001
任何理由在輸出爲什麼我得到這個結果
編輯,
其確定我這樣做
var xPos = (1.0 * - t*t) * point1.x + 2.0 * (1 - t) * t * controlPoint1.x + t * t * point2.x;
當它是這個
var xPos = (1.0 - t*t) * point1.x + 2.0 * (1 - t) * t * controlPoint1.x + t * t * point2.x;
您是否希望繪製曲線或沿其移動物體? – Nikki
移動一個對象一段時間,我對缺乏反應表示歉意,一直非常忙碌,並且在工作中如此:(但歡呼所有答案,我會深入瞭解今晚 – Canvas