我想創建一個可視化繪製立方貝塞爾曲線的畫布腳本,但到目前爲止,我一直不成功讓我的線連接。見代碼爲什麼我的畫布JavaScript不能連線?
var canvas=document.getElementById("canvas");
var c = canvas.getContext("2d");
// Bezier eq. code
coord = function(x,y) { if(!x) var x=0; if(!y) var y=0; return {x: x, y: y}; }
B1 = function(t) { return (t*t*t); }
B2 = function(t) { return (3*t*t*(1-t)); }
B3 = function(t) { return (3*t*(1-t)*(1-t)); }
B4 = function(t) { return ((1-t)*(1-t)*(1-t)); }
function getBezier(t,C1,C2,C3,C4) {
var pos = new coord();
pos.x = C1.x * B1(t) + C2.x * B2(t) +C3.x * B3(t) + C4.x * B4(t);
pos.y = C1.y * B1(t) + C2.y * B2(t) + C3.y * B3(t) + C4.y * B4(t);
return pos;
}
//Ctrl points.
P1 = coord(12,12);
P2 = coord(90,1);
P3 = coord(0,190);
P4 = coord(150,150);
t=0;
function drawbez() {
if (t == 0) {var interval = setInterval('drawbez()',1);}
var curpos = getBezier(t2,P1,P2,P3,P4); // Staðan í ferlinum
if (t > 1) { clearInterval(interval); return; }
c2.moveTo(curpos.x,curpos.y);
c2.lineTo(curpos.x+t2,curpos.y+t2);
c2.stroke();
t = t+0.01
}
任何想法?
我做了一個使用完全相同的繪圖命令,並使用隨機數的代碼,實際上給了我連線。
對HTML見代碼here
使用貝塞爾曲線從13日並行 http://13thparallel.com/archive/bezier-curves/
快速提示...間隔仍然超出範圍。它應該是一個全球性的,因爲你會檢查每次你回來。 – 2011-05-20 11:37:53
@John - 好點,是的,它應該在'drawbez()'函數之外聲明。 :) – 2011-05-20 11:40:13