我有一些涉及我无法提前知道的任意角度线的碰撞检测。我已经设置了我的代码以将它们视为 y = mx + b 的形式,并且每当我创建一条水平线时,所有字段都会显示为 NaN。我的问题是:AS3 中的哪些操作会导致返回 NaN。我想到的是,一条完全垂直的线会有 Number.POSITIVE_INFINITY 的斜率,我想这可能会导致潜在的错误。它不应该在水平线上,但会发生逻辑问题。关键是,是什么导致在 AS3 中返回 NaN?
package {
import flash.display.Sprite
public class Line extends Sprite{
var x1:Number, x2:Number, y1:Number, y2:Number;
var m:Number, b:Number; //y = mx + b
public function Line(x1C:Number, y1C:Number, x2C:Number, y2C:Number){
x1 = x1C;
x2 = x2C;
y1 = y1C;
y2 = y2C;
if(x2 - x1 == 0)
m = Number.POSITIVE_INFINITY;
else if(y2 - y1 == 0)
m = 0;
else
m = (y2 - y1) / (x2 - x1); //these calculations could be off....
b = y1 - (m * x1);
this.graphics.moveTo(x1, y1);
}
}
}