二维平面上点与线段关系的判定

问题的基本模型是:已知平面上一线段AB,判定平面上一点C相对于AB的位置(C不和AB共线)。

通过向量叉积来判定线段与点的的位置关系。

例题:Toys (http://poj.org/problem?id=2318)

//判断点于线段的位置关系 #include<iostream> #include<cstdio> #include<stdlib.h> # define N 5010 using namespace std; typedef struct Node { int x,y; }Point; Point up[N],dw[N]; int ans[N],cnt; int cross(Point a,Point b,Point o) { return (a.x-o.x)*(b.y-o.y)-(b.x-o.x)*(a.y-o.y); } int find(Point t) { for(int i=0;i<cnt-1;i++) if(cross(t,up[i],dw[i])>0 && cross(t,up[i+1],dw[i+1])<0) return i; } int main() { int n,m,x1,y1,x2,y2; while(scanf("%d",&n),n) { scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2); cnt=0; up[cnt].x=x1;up[cnt].y=y1; dw[cnt].x=x1;dw[cnt++].y=y2; for(int i=0;i<n;i++) { int u,l; scanf("%d%d",&u,&l); up[cnt].x=u;up[cnt].y=y1; dw[cnt].x=l;dw[cnt++].y=y2; } up[cnt].x=x2;up[cnt].y=y1; dw[cnt].x=x2;dw[cnt++].y=y2; memset(ans,0,sizeof(ans)); Point t; for(int i=0;i<m;i++) { scanf("%d%d",&t.x,&t.y); ans[find(t)]++; } for(int i=0;i<cnt-1;i++) printf("%d: %d/n",i,ans[i]); printf("/n"); } return 0; }

二维平面上点与线段关系的判定相关推荐

  1. 给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?

    问题描述: 给定两个数组arrx和arry,长度都为N.代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点? 思想 坐标系中两个点 ...

  2. Java黑皮书课后题第10章:*10.15(几何:边框)边框是指包围一个二维平面上点集的最小矩形,编写一个方法,为二维平面上一系列点返回一个边框

    *10.15编写一个方法,为二维平面上一系列点返回一个边框 题目 程序 代码 Test15.java Test13_MyRectangle2D.java 运行结果 题目 点击这里跳转编程练习题10.1 ...

  3. 可视化 —— 二维平面上的散列点在坐标轴方向上的移动

    二维平面可以通过平面直角坐标系表示: 二维平面上不同的散列点,也就是平面直角坐标系上的不同的点, 其在坐标轴方向上的移动,分别在以下两个方向上的移动: 在 xx 轴方向上,(x1,y1)(x_1, y ...

  4. JavaScript:实现计算二维平面上两点之间的距离算法(附完整源码)

    JavaScript:实现计算二维平面上两点之间的距离算法 /*Calculate the mathematical properties involving coordinatesCalculate ...

  5. 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。

    在二维平面上,有一个机器人从原点 (0, 0) 开始.给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束. 移动顺序由字符串表示.字符 move[i] 表示其第 i 次移动.机器 ...

  6. 现在,我们用大炮来打蚊子:蚊子分布在一个M×N格的二维平面上,每只蚊子占据一格。向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意:

    目录 输入格式: 输出格式: 输入样例: 输出样例: 正确答案: 现在,我们用大炮来打蚊子:蚊子分布在一个M×N格的二维平面上,每只蚊子占据一格.向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意: ...

  7. 二维平面上判断点是否在三角形内

    1. 已知三角形的三个顶点坐标,判断某个点是否在三角形中(在三角形的边上,我们也视作在三角形中),本文给出了三种方法. 算法1:利用面积法 如上图所示,如果点P在三角形ABC的内部,则三个小三角形PA ...

  8. 二维平面上两个矩形之间的最小距离

    1.背景 最近遇到一个问题,可以抽象成如题目描述的问题. 如何求解例如 矩形(EFGH),矩形(IJKL),矩形(MNOP)  到矩形 ABCD的距离呢? 2.分析 最短距离 会出现在 矩形1 的边界 ...

  9. Keras实现生成对抗网络(GAN)(生成二维平面上服从某一分布的点)

    GAN原理 相关数学推导可参考 李宏毅https://www.bilibili.com/video/av36779967/?p=4 通俗的比喻:制造假钞(G)和警察(D)对抗的过程.假钞制造者制造假钞 ...

最新文章

  1. 外媒:华为有望最早于2021年推出自动驾驶汽车
  2. C++ 中常用数学函数
  3. ChainBuilder Connect SOA平台解决方案的案例研究
  4. 【已解决】tomcat启动不成功(点击startup.bat闪退)的解决办法
  5. 与JSP的初次邂逅……
  6. CXF小窥:知道服务器端wsdl地址,如何本地测试服务接口
  7. centos 7用ss命令来查看端口占用和对应进程
  8. C# 注册表控制++ Autorun after windows
  9. python美化输出模块_python日志处理模块
  10. mysql拷贝目录迁移方案_mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??...
  11. 利用前中,后中建立二叉搜索树和二叉树的镜像翻转
  12. 前台系统(内容管理)
  13. KVM虚拟化技术基础框架
  14. c语言中 cos函数图像,cos图像(cos函数的图像)
  15. 泛函分析 04.01 有界线性算子 - 有界线性算子与有界线性泛函
  16. RTD温度测量系统的实现
  17. 各种表格扫描件OCR识别为电子表格的技术
  18. Java POI合并多个word文件
  19. firefox地址栏搜索
  20. 计算机原理电梯控制系统设计,《智能电梯控制系统的实现》-毕业论文(设计).doc...

热门文章

  1. Android 打包流程之aapt打包资源文件
  2. 如何提取图片中的文字
  3. 10. JS编程之求数组元素的二次方
  4. 哲学博士创立,创投教父投资,这家公司要冲击美股最大IPO了
  5. 如何达到高效的网络信息传播
  6. Qt自定义控件 -- 仪表盘01
  7. json-server Error: EPERM: operation not permitted, mkdir ‘C:\Progra m Files\nodejs\node_
  8. 课件(Part 1, PJ)
  9. 阿里云备案审核一般多久能过?域名备案需要几天?
  10. 让NotePad++高亮显示SQLite关键字