事前にわからない任意の角度の線を含む衝突検出があります。それらをy=mx + bの形式として扱うようにコードを設定しました。水平線を作成するたびに、すべてのフィールドがNaNとして出力されます。私の質問は、AS3でどのような操作を行うとNaNが返される可能性があるかということです。頭に浮かぶのは、完全に垂直な線の傾きがNumber.POSITIVE_INFINITYになるということです。これにより、潜在的なエラーが発生する可能性があると思います。水平線上にあるべきではありませんが、論理的な問題が発生します。重要なのは、NaNがAS3で返される原因は何ですか?
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);
}
}
}