一定有什么不对劲。我有这个功能,它只适用于整数:
straightPoints = function(x1,y1,x2,y2) {
console.log("Started getting points.");
var result = [];
// Define differences and error check
var dx = Math.abs(x2 - x1);
var dy = Math.abs(y2 - y1);
var sx = (x1 < x2) ? 1 : -1;
var sy = (y1 < y2) ? 1 : -1;
var err = dx - dy;
// Set first coordinates
result.push(x1);
result.push(y1);
// Main loop
while (!((x1 == x2) && (y1 == y2))) {
var e2 = err << 1;
if (e2 > -dy) {
err -= dy;
x1 += sx;
}
if (e2 < dx) {
err += dx;
y1 += sy;
}
result.push(x1);
result.push(y1);
}
console.log("Returning result: "+result);
// Return the result
return result;
}
这是我想要用于某些游戏的非常典型的线渲染算法。现在奇怪的是,当我用无效参数调用函数时,特别是straightPoints(0,0,0.15425144988758405,-0.9880316240928618);
它只是终止而没有任何异常。我注意到有点滞后,我认为这是一个浏览器问题,Firefox并没有通知我杀死javascript线程。
另一方面,滞后的长度比firefox在问我卡住脚本之前的典型时间要短得多。
我做了一个JSFiddle here,所以你可以看到它为你做了什么,但我得到了:
Started getting points, starting at: (0,0,0.15425144988758405,-0.9880316240928618)
然后什么也没有。