计算两条直线的交点

最近工作中用到这个,去网上搜了一下,有些能用但是不完善,没考虑与x,y轴平行的情况,稍微修改一下如下,做个记录,方便后续查阅:

    /**
     * 计算两条直角的交点
     */
    public static TPoint getCrossPoint(ModelLine line1,ModelLine line2){
        TPoint result = new TPoint();
        if (line1.pt1.getX() == line1.pt2.getX()) {
            float a2 = (line2.pt1.getY()-line2.pt2.getY())/(line2.pt1.getX()-line2.pt2.getX());
            float b2 = line2.pt1.getY()-a2*(line2.pt1.getX());
            result.setJd(line1.pt1.getX());
            result.setWd(a2*result.getJd()+b2);
        } else if (line2.pt1.getX() == line2.pt2.getX()) {
            float a1 = (line1.pt1.getY()-line1.pt2.getY())/(line1.pt1.getX()-line1.pt2.getX());
            float b1 = line1.pt1.getY()-a1*(line1.pt1.getX());
            result.setJd(line2.pt1.getX());
            result.setWd(a1*result.getJd()+b1);
        } else {
            float a1 = (line1.pt1.getY()-line1.pt2.getY())/(line1.pt1.getX()-line1.pt2.getX());
            float b1 = line1.pt1.getY()-a1*(line1.pt1.getX());

            float a2 = (line2.pt1.getY()-line2.pt2.getY())/(line2.pt1.getX()-line2.pt2.getX());
            float b2 = line2.pt1.getY()-a2*(line2.pt1.getX());

            result.setJd((b1-b2)/(a2-a1));
            result.setWd(a1*result.getJd()+b1);
        }
        return result;
    }

java的代码写算法有些累赘,看着有些麻烦,但是看懂结构其实也不麻烦,其实就是点斜式求解的方法。其他实体类就不给出了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值