3dmath 直线与直线的距离点

这里推导直线与直线的最短距离点。

已知 直线(p1,p2),和(p3,p4)。

 这里附上代码:

public static int LineToLineDistancePoint(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, out Vector3 rp1,
            out Vector3 rp2)
        {
            rp1 = null;
            rp2 = null;
            Vector3 pa;
            Vector3 pb;
            int i = LineToLinePoint(p1, p2, p3, p4, out pa, out pb);
            if (i == 1)
            {
                rp1 = pa;
                rp2 = pa;
                return 1;
            }

            if (i == -1)
            {
                //平行了
                return 0;
            }

            
            Vector3 E = p3 - p1;
            Vector3 v1 = (p2 - p1).Normalized();
            Vector3 v2 = (p4 - p3).Normalized();
            float n = Dot(v1, v2);
            float k = (Dot(E, v2)*n - Dot(E, v1)) / (n * n - 1);
            float j = k * n - Dot(E , v2);
            rp1 = p1 + k * v1;
            rp2 = p3 + j * v2;
            return 1;
        }

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值