呵呵,有点急。。。
#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 - a1 * (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);
}
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 - a1 * (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);
}