题意:此题要处理给定的四个点,前两个点,后两个点分别构成一条直线,判断这两条直线是否重合,平行,相交,若相交,给出交点。

解题思路:可以用向量叉积判断是否重合和平行

重合:设第一个点和第二个点构成向量分别和第一个点和第三个点构成向量,和第四个点构成向量叉积为0

平行: 设第一个点和第二个点构成向量和第三个点和第四个点构成向量叉积为0

相交: 两点确定一条直线后得到两条直线,根据二元方程得到交点

#include<iostream>
#include<cstdio>
using namespace std;typedef struct//点坐标
{int x,y;
}Point;typedef struct//线性方程ax + by + c = 0
{int a,b,c;
}Line;int line(int x1,int y1,int x2,int y2)//计算两个向量叉积的值,若 == 0,则表示共线
{return x1*y2 - x2*y1;
}Line lineform(int x1,int y1,int x2,int y2)//两点构成一条直线
{Line temp;temp.a = y2 - y1;temp.b = x1 - x2;temp.c = x2*y1 - x1*y2;return temp;
} double x,y;
void lineintersect(Line l1,Line l2)//两个直线方程联立得到交点坐标
{double d = l1.a*l2.b - l2.a*l1.b;x = (l2.c*l1.b - l1.c*l2.b) / d;y = (l2.a*l1.c - l1.a*l2.c) / d;
}int main()
{int num;Point p1,p2,p3,p4;Line l1,l2;cin>>num;cout<<"INTERSECTING LINES OUTPUT"<<endl;while(num--){cin>>p1.x>>p1.y>>p2.x>>p2.y>>p3.x>>p3.y>>p4.x>>p4.y;if(line(p2.x-p1.x,p2.y - p1.y,p3.x - p1.x,p3.y - p1.y) == 0 && line(p2.x-p1.x,p2.y - p1.y,p4.x - p1.x,p4.y - p1.y) == 0)cout<<"LINE"<<endl;else if(line(p2.x-p1.x,p2.y - p1.y,p4.x - p3.x,p4.y - p3.y) == 0)cout<<"NONE"<<endl;else{l1 = lineform(p1.x,p1.y,p2.x,p2.y);l2 = lineform(p3.x,p3.y,p4.x,p4.y);lineintersect(l1,l2);printf("POINT %.2lf %.2lf\n",x,y);}}cout<<"END OF OUTPUT"<<endl;return 0;
}

转载于:https://www.cnblogs.com/ZZUGPY/p/8434463.html

poj 1269 计算几何相关推荐

  1. 暑期集训3:几何基础 练习题C: POJ - 1269

    2018学校暑期集训第三天--几何基础 练习题B --  POJ - 1269 Intersecting Lines We all know that a pair of distinct point ...

  2. 【POJ - 1269 】Intersecting Lines (计算几何,直线间的位置关系)

    题干: We all know that a pair of distinct points on a plane defines a line and that a pair of lines on ...

  3. POJ - 1269 Intersecting Lines(计算几何 + 叉积 + 跨立实验)

    链接 Intersecting Lines 题意 给出两条线段,判断是否共线,平行,或者相交,如果相交输出交点: 思路 如何判断共线: 我们知道两个向量叉积为 000,两向量共线: 所以我们只需要判断 ...

  4. POJ 1269 Intersecting Lines(求直线交点)

    http://poj.org/problem?id=1269 求交点见zhhx课件 #include<iostream> #include<cstdio> #include&l ...

  5. poj 1269 直线相交情况

    链接:http://poj.org/problem?id=1269 题意:给两条直线,判断它们是重合.平行还是相交,相交则求交点. #include<iostream> #include& ...

  6. [Poj 2187] 计算几何之凸包(二) {更高效的算法}

    { 承上一节 继续介绍点集的凸包  (下文中所有凸包 若不做特殊说明均指点集的凸包) 这一节介绍相比更高效的算法 } ========================================= ...

  7. POJ 2954-Triangle(计算几何+皮克定理)

    题目地址:POJ 2954 题意:给出三角形的三个顶点,求内部格点的个数. 思路:形同POJ 1265. #include <stdio.h> #include <math.h> ...

  8. POJ 1265-Area(计算几何+皮克定理+多边形面积公式)

    题目地址:POJ 1265 题意:给定一个格点多边形,求出内部点数in,边上点数on,和面积S. 思路:运用的定理很多. 1.皮克定理:S=in+on/2-1,即in=(2*S+2-on)/2. 2. ...

  9. POJ - Euclid(计算几何)

    题目链接:http://poj.org/problem?id=3813 Time Limit: 1000MS Memory Limit: 65536K Description In one of hi ...

最新文章

  1. 基于持久内存的 单机上亿(128B)QPS -- 持久化 k/v 存储引擎
  2. PHP利用CURL_MULTI实现多线程
  3. WEB中会话跟踪[转]
  4. 《R语言编程艺术》——2.5 使用all()和any()
  5. Java环境变量的配置 (Win10环境下)
  6. iis8使用url2.0模块实现http跳转到https
  7. VS2015+OpenCV3.4.5+QT5.12+WINDOWS10用c++调用tensorflow训练好的.pb文件图像检测
  8. python查找手册
  9. 硬盘坏道检测工具对比(DiskGenius/HdTunePro/MHDD等)
  10. vue插件颜色选择器
  11. 图形学常见概念与算法-常用初等数学公式
  12. 医学影像常用Python包
  13. 解决服务器网卡不识别问题
  14. SSDT inlineHook
  15. Ackerman函数
  16. Ubuntu环境下用docker从0到1部署Elasticsearch 7集群
  17. EXT4 之 Android 文件系统剖析
  18. Android 加固与监测,基于Android平台的恶意软件检测和软件加固技术研究
  19. 基于haar特征的adaboost算法_目标检测算法介绍
  20. 服务器端缓存企业微信,企业微信开发

热门文章

  1. #第六次会议#(4.21)
  2. Rust 阴阳谜题,及纯基于代码的分析与化简
  3. MyEclipse修改jsp模板文件
  4. 优化SQLServer--表和索引的分区(二)
  5. 技术文章是怎样炼成的?
  6. 安全日志的自动备份方法
  7. java 向量上的坐标点_新高三知识点-点的平移公式
  8. linux redhat 下载_使用Vmware创建Linux(Ubuntu)系统
  9. IPv6 — Multi-homing(多宿主/多链路/多归属)
  10. 互联网协议 — HTTP/3 超文本传输协议第 3 版