c++求两条直线的交点

编程入门 行业动态 更新时间:2024-10-28 04:27:00

c++求两条直线的<a href=https://www.elefans.com/category/jswz/34/1768934.html style=交点"/>

c++求两条直线的交点

一、已知每条直线的两个点:

cv::Point2d get2lineIPoint(cv::Point2d lineOnePt1, cv::Point2d lineOnePt2, cv::Point2d lineTwoPt1, cv::Point2d lineTwoPt2)
{double x;double y;cv::Point2d result(-1,-1);double k = (lineOnePt1.y - lineOnePt2.y) / (lineOnePt1.x- lineOnePt2.x);double b = lineOnePt1.y - k * lineOnePt1.x;double k1 = (lineTwoPt1.y - lineTwoPt2.y) / (lineTwoPt1.x - lineTwoPt2.x);double b1 = lineTwoPt1.y - k1 * lineTwoPt1.x;x = (b1 - b) / (k - k1);y = k * x + b;result.x = x;result.y = y;return result;
}

测试如下:

二、已知每条直线的一个点和方向(点斜式直线)

cv::Point2d get2lineIPoint(cv::Vec4f lineParam1, cv::Vec4f lineParam2)
{//Vec4f :参数的前半部分给出的是直线的方向,而后半部分给出的是直线上的一点cv::Point2d result(-1, -1);double cos_theta = lineParam1[0];double sin_theta = lineParam1[1];double x = lineParam1[2];double y = lineParam1[3];double k = sin_theta / cos_theta;double b = y - k * x;cos_theta = lineParam2[0];sin_theta = lineParam2[1];x = lineParam2[2];y = lineParam2[3];double k1 = sin_theta / cos_theta;double b1 = y - k1 * x;result.x = (b1 - b) / (k - k1);result.y = k * result.x + b;return result;
}

更多推荐

c++求两条直线的交点

本文发布于:2023-07-01 07:00:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/972352.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:交点   两条   直线

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!