数学题,证明AB和CD。只需证明C、D在AB直线两侧,并且A、B在CD直线两侧。
公式为:(ABxAC)*(ABxAD)<= 0 and(CDxCA)*(CDxCB)<= 0

 #include <stdio.h>

 #define MAXNUM 105

 typedef struct {
double x1, y1;
double x2, y2;
} line_st; line_st lines[MAXNUM]; int cal(int i, int j) {
double ab_x, ab_y, ac_x, ac_y, ad_x, ad_y;
double a, b; ab_x = lines[i].x2 - lines[i].x1;
ab_y = lines[i].y2 - lines[i].y1;
ac_x = lines[j].x1 - lines[i].x1;
ac_y = lines[j].y1 - lines[i].y1;
ad_x = lines[j].x2 - lines[i].x1;
ad_y = lines[j].y2 - lines[i].y1;
a = ab_x*ac_y - ab_y*ac_x;
b = ab_x*ad_y - ab_y*ad_x;
if (a*b <= )
return ;
else
return ;
} int main() {
int n;
int i, j, k; while (scanf("%d", &n)!=EOF && n) {
for (i=; i<n; ++i)
scanf("%lf%lf%lf%lf", &lines[i].x1,&lines[i].y1,&lines[i].x2,&lines[i].y2);
k = ;
for (i=; i<n; ++i)
for (j=; j<i; ++j)
if (cal(i, j) && cal(j, i))
k++;
printf("%d\n", k);
} return ;
}

最新文章

  1. 关于netty
  2. DBHelper (支持事务与数据库变更)
  3. 转:DataSet、DataTable、DataRow、DataColumn区别及使用实例
  4. Swift 遇到的报错信息
  5. Speed-BI 云平台视频观看频道
  6. return 还是 不return
  7. VHDL之Port map and open
  8. 关于Relay Log无法自己主动删除的问题(Neither --relay-log nor --relay-log-index were used)
  9. JavaScript &amp; XML
  10. [linux]查看机器有几个cpu,是否支持64位
  11. PowerShell:因为在此系统上禁止运行脚本
  12. suffix tree
  13. 几个常用的文本处理shell 命令:find、grep、sort、uniq、sed、awk
  14. FFMPEG结构体分析:AVPacket
  15. vue 双向数据绑定的实现学习(二)- 监听器的实现
  16. mysql 单列无重复
  17. Jupyter 魔术命令(magic commands)
  18. PAT第二次上机题目
  19. SpringAOP-基于@AspectJ的简单入门
  20. C++ 模板详解 肥而不腻

热门文章

  1. 备份BinLog并压缩 全备份
  2. c#重要特性之一委托
  3. C#多线程同步
  4. C# 多任务之 Task
  5. 给div设置一个关闭按钮.
  6. 修改虚机IP
  7. 用VIM写作
  8. Linux网络服务器epoll模型的socket通讯的实现(一)
  9. OpenJudge/Poj 1936 All in All
  10. Struts2文件上传方式与上传失败解决方式