line2d.as

来自「flex3d 的源码」· AS 代码 · 共 57 行

AS
57
字号
package engine.geom
{

    /** Line in 2D space */
    public class Line2D
    {
        public var a:Number;
        public var b:Number;
        public var c:Number;

        public function Line2D(a:Number, b:Number, c:Number)
        {
            this.a = a;
            this.b = b;
            this.c = c;
        }

        public static function from2points(v0:Vector, v1:Vector):Line2D
        {
            var a:Number = v1.y - v0.y;
            var b:Number = v0.x - v1.x;
            var c:Number = -(b*v0.y + a*v0.x);

            return new Line2D(a, b, c);
        }

        public static function cross(u:Line2D, v:Line2D):Vector
        {
            var det:Number = u.a*v.b - u.b*v.a;
            var xd:Number = u.b*v.c - u.c*v.b;
            var yd:Number = v.a*u.c - u.a*v.c;

            return new Vector(xd / det, yd / det, 0);
        }

        public function sideV(v:Vector):Number
        {
            return a*v.x + b*v.y + c;
        }

        public function side(x:Number, y:Number):Number
        {
            return a*x + b*y + c;
        }

        public function distance(v:Vector):Number
        {
            return sideV(v) / Math.sqrt(a*a + b*b);
        }

        public function toString():String
        {
            return "line{ a: "+a+" b: "+b+" c:"+c+" }";
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?