您的位置:首页 > 其它

计算两条直线的交点

2015-11-14 23:55 911 查看
/article/5844328.html

原文有一处错误

int b2 = line2.point1.y - a1 * (line2.point1.x);

应该为

int b2 = line2.point1.y - a2 * (line2.point1.x);

下面是修正后的代码,在此感谢原作者。

#include<stdio.h>

typedef struct point{
int x;
int y;
}point;

typedef struct line{
point point1;
point point2;
}line;

//计算两条直线的交点
point getCross(line line1, line line2)
{
point CrossP;
//y = a * x + b;
int a1 = (line1.point1.y - line1.point2.y) / (line1.point1.x - line1.point2.x);
int b1 = line1.point1.y - a1 * (line1.point1.x);

int a2 = (line2.point1.y - line2.point2.y) / (line2.point1.x - line2.point2.x);
int b2 = line2.point1.y - a2 * (line2.point1.x);

CrossP.x = (b1 - b2) / (a2 - a1);
CrossP.y = a1 * CrossP.x + b1;
return CrossP;
}

void main()
{
line line1;
line line2;

//line1
line1.point1.x = 10;
line1.point1.y = 10;
line1.point2.x = 50;
line1.point2.y = 50;

//line2
line2.point1.x = 2;
line2.point1.y = 60;
line2.point2.x = 60;
line2.point2.y = 0;

point CointP = getCross(line1, line2);
printf("%d,%d\n", CointP.x, CointP.y);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: