#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
struct Line
{
double x1,y1,x2,y2;
}node[11000];
bool solve(Line a,Line b)
{
if(((a.x1-b.x1)*(a.y2-b.y1)-(a.x2-b.x1)*(a.y1-b.y1))*((a.x1-b.x2)*(a.y2-b.y2)-(a.x2-b.x2)*(a.y1-b.y2))>0)return false;
if(((b.x1-a.x1)*(b.y2-a.y1)-(b.x2-a.x1)*(b.y1-a.y1))*((b.x1-a.x2)*(b.y2-a.y2)-(b.x2-a.x2)*(b.y1-a.y2))>0)return false;
return true;
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
for(int i=0;i<n;i++)scanf("%lf%lf%lf%lf",&node[i].x1,&node[i].y1,&node[i].x2,&node[i].y2);
int resn=0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(solve(node[i],node[j]))resn++;
}
}
printf("%d\n",resn);
}
return 0;
}
计算线段交点数量 模板
猜你喜欢
转载自blog.csdn.net/MallowFlower/article/details/81565836
今日推荐
周排行