-
#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; }
求位于同一平面内的两条直线的交点
最新推荐文章于 2022-10-06 22:27:51 发布