C++实现两点确定一条直线公式

结构体定义

// Ax+By+C=0;
typedef struct Line{ 
	double A;
	double B;
	double C;
}Line;

实现代码

//第一个点(x1,y1)
//第二个点(x2,y2)
Line TwoPointGetLine(double x1, double y1, double x2, double y2)
{
	Line line;
	line.A = (y2 - y1);
	line.B = (x1 - x2);
	line.C = y1 * (x2 - x1) + x1 * (y1 - y2);

	if (line.B < 0)
	{
		line.A = -line.A;
		line.B = -line.B;
		line.C = -line.C;
	}
	return line;
}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,可以使用数学公式来计算两条直线的交。假设两条直线分别由两个表示:(x1, y1) 和 (x2, y2) 以及 (x3, y3) 和 (x4, y4)。 下面是一个示例的代码实现: ```cpp #include <iostream> struct Point { double x; double y; }; bool findIntersection(Point p1, Point p2, Point p3, Point p4, Point& intersection) { double x1 = p1.x, y1 = p1.y; double x2 = p2.x, y2 = p2.y; double x3 = p3.x, y3 = p3.y; double x4 = p4.x, y4 = p4.y; double denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4); if (denominator == 0) { // Lines are parallel or coincident return false; } double x = ((x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4)) / denominator; double y = ((x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4)) / denominator; intersection.x = x; intersection.y = y; return true; } int main() { Point p1 = {1.0, 1.0}; Point p2 = {2.0, 2.0}; Point p3 = {1.0, 2.0}; Point p4 = {2.0, 1.0}; Point intersection; if (findIntersection(p1, p2, p3, p4, intersection)) { std::cout << "Intersection point: (" << intersection.x << ", " << intersection.y << ")" << std::endl; } else { std::cout << "Lines are parallel or coincident." << std::endl; } return 0; } ``` 以上代码使用了一个结构体 `Point` 来表示的坐标。函数 `findIntersection` 接受四个作为参数,并且返回一个布尔值表示是否找到了交。如果找到了交,交的坐标将存储在 `intersection` 中。 在 `main` 函数中,我们定义了两条直线的端,并调用 `findIntersection` 函数来计算交。如果找到了交,它将被输出;否则,将输出一条消息表示直线是平行的或者重合的。 请注意,此代码仅适用于直线,而不适用于线段。如果你需要处理线段的情况,你需要添加额外的逻辑来判断交是否在两条线段之间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值