求线段的交点

求线段的交点

var p1: Point = new Point(0, 0);
var p2: Point = new Point(50, 50);
var p3: Point = new Point(0, 50);
var p4: Point = new Point(50, 0);

var p: Point = new Point;
if (p1.x == p2.x) {
    if (p3.x == p4.x) {
        //平行线
        p = null;
    } else {
        p.x = p1.x;
        p.y = p3.y + (p1.x - p3.x) / (p4.x - p3.x) * (p4.y - p3.y);
    }
} else if (p3.x == p4.x) {
    p.x = p3.x;
    p.y = p1.y + (p3.x - p1.x) / (p2.x - p1.x) * (p2.y - p1.y);
} else {
    var K1: Number = (p1.y - p2.y) / (p1.x - p2.x);
    var K2: Number = (p3.y - p4.y) / (p3.x - p4.x);
    if (K1 == K2) {
        //平行线
        p = null;
    } else {
        var B1: Number = (p1.x * p2.y - p1.y * p2.x) / (p1.x - p2.x);
        var B2: Number = (p3.x * p4.y - p3.y * p4.x) / (p3.x - p4.x);
        p.x = (B2 - B1) / (K1 - K2);
        p.y = K1 * p.x + B1;
    }
}
trace(p.x, p.y); //output: 25,25

  

原文地址:https://www.cnblogs.com/fengziwu/p/15257079.html