C++ 实现已知直线上两个点求解直线方程,并求两条直线的交点
2017-07-11 13:52
1176 查看
已知点A(x1,y1)、B(x2,y2)为直线L1上两个点,点C(x3,y3)、D(x4,y4)为直线L2上两个点,求解两个直线的方程以及交点坐标,直接贴代码
直接来个完整版的,ctrl+F5,运行效果如下,打完收工!
#include <iostream> using namespace std; //定义Point2f结构体 struct Point2f { float x; float y; }; // 定义直线参数结构体 struct LinePara { float k; float b; }; // 获取直线参数 void getLinePara(float& x1, float& y1, float& x2, float& y2, LinePara & LP) { int m = 0; // 计算分子 m = x2 - x1; if (0 == m) { LP.k = 10000.0; LP.b = y1 - LP.k * x1; } else { LP.k = (y2 - y1) / (x2 - x1); LP.b = y1 - LP.k * x1; } } // 获取交点 bool getCross(float & x1, float &y1, float & x2, float & y2, float & x3, float &y3, float & x4, float & y4, Point2f & pt){ LinePara para1, para2; getLinePara(x1, y1, x2, y2, para1); getLinePara(x3, y3, x4, y4, para2); // 判断是否平行 if (abs(para1.k - para2.k) > 0.5) { pt.x = (para2.b - para1.b) / (para1.k - para2.k); pt.y = para1.k * pt.x + para1.b; return true; } else { return false; } } void main() { Point2f pt1, pt2, pt3, pt4, pt; pt1.x = 1.0; pt1.y = 1.0; pt2.x = 2.0; pt2.y = 2.0; pt3.x = 0.0; pt3.y = 2.0; pt4.x = 2.0; pt4.y = 0.0; getCross(pt1.x, pt1.y, pt2.x, pt2.y, pt3.x, pt3.y, pt4.x, pt4.y, pt); cout << pt.x << " , " << pt.y << endl; }
直接来个完整版的,ctrl+F5,运行效果如下,打完收工!
相关文章推荐
- 图像处理;C++求已知两直线方程交点
- YT03-递推求解课后题目-1004 计算直线的交点数-(6.7日-烟台大学ACM预备队解题报告)分析: 将n 条直线排成一个序列,两条直线最多只有一个交点,三条直线最多有两个交点,直线n 和其他n
- 【原创】已知四个坐标点求其两条直线交点坐标
- 求两条直线的交点,运用面向对象的思想编程实现C++源码
- 已知两条直线上各两点坐标,求两条直线交点坐标
- C++实现二分法求解方程
- 1.空间中直线交点坐标问题,2.已知球面三点求球心问题以及Matlab实现
- c++求两条直线的交点
- 两点确定一条直线,已知四个点确定的两条直线,求这两条直线的交点
- 高斯消元法求解一元多次方程 C/C++实现
- c语言实现,用最小二乘法求解方程数多于未知变量的线性方程组的最适解(即矛盾方程组)
- 面试题之丑数的C++实现求解(孤陋寡闻了,才知道丑数这么high的东东)
- Revit 2011 二次开发之“取得两条直线的交点”
- 各种线性方程组求解算法的C++实现
- C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
- C/C++语言的点滴(一) -- 实现两个任意类型的数据的交换
- 两个栈实现队列C++代码
- 一般方程与参数方程求直线交点
- 八皇后问题求解----C++实现
- 求两个大整数(大于32位)的乘积的C++实现代码