-
#include <tchar.h> #include <iostream> #include <math.h> using namespace std; struct Point { Point() { dX = 0.0; dY = 0.0; } double dX; double dY; }; // 第一条直线式:a11X + a12Y = b1 // 第二条直线式:a21X + a22Y = b2 // 利用行列式计算交点 // 返回值 true -- 函数执行成功, false -- 函数执行失败(两条直线平行) bool BeeLineInterSection(double da11, double da12, double db1, double da21, double da22, double db2, Point& PtInterSection) { double dD = da11 * da22 - da21 * da12; if (fabs(dD) < 0.0001) { return false; } double dD1 = db1 * da22 - db2 * da12; double dD2 = da11 * db2 - da21 * db1; PtInterSection.dX = dD1 / dD; PtInterSection.dX = dD2 / dD; return true; } int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { /* 计算下列两个直线的交点 X + 3Y = 1 2X - 4Y = 5 */ Point PtResult; if(BeeLineInterSection(1, 3, 1, 2, -4, 5, PtResult)) { cout << PtResult.dX << _T(" ") << PtResult.dY << endl; } else { cout << _T("两条直线没有交点") << endl; } return 0; }
求位于同一平面内的两条直线的交点
最新推荐文章于 2023-04-25 14:57:14 发布
本文介绍了一种通过行列式计算两条直线交点的方法,并提供了一个C++实现示例。该方法能够判断两条直线是否平行,并给出交点坐标。
3万+

被折叠的 条评论
为什么被折叠?



