线段相交与射影坐标

本文探讨了如何判断线段相交的问题,使用了跨立实验和排斥实验的方法。通过射影坐标的概念,阐述了点、直线的关系,并介绍了如何计算直线交点和点在直线上的垂点。此外,还提到了三点共线和三线共点的条件,以及射影坐标在矩阵运算中的局限性。最后提到了求线段集交点集的算法复杂性和poj1066问题,以及如何判断直线关系和求交点。
摘要由CSDN通过智能技术生成

判断线段相交

跨立实验+排斥实验

排斥:矩形相交

跨立:叉积判点位置

射影坐标

点X(x,y,1)
直线U(a,b,c)(一般式)


两点求直线X1 X X2
直线交点 U1 X U2(无交点即x3=0)
点在直线上 X * U=0


过X的U的垂线 X X U(有待商榷,感觉有问题,但陈可卿ppt是这么写的)
X在U上的垂点 (X X U)X U


过X的U的垂线,自己推了一下,应该是X X (X沿U的法向量移动的一个点,U的法向量为(a,b))


三点共线(X1 X X2)*X3=0
三线共点(U1 X U2)*U3=0


射影坐标看起来很好用,但是它不是定量研究,更多是关于比值的,到后来的矩阵运算就令人难以接受了。


求线段集的交点集(还没抽时间实现)

交点一般情况下不是n^2的,所以有mlogn算法(m为交点数)

沿x轴方向从左到右,碰到端点和交点都是调度事件
碰到一个新的开始端点,只要求它与在y轴上相邻两条线段的交点即可。如果它和其它非相邻线段有交点,随着扫描点的右移,肯定有机会求交点
碰到下一个交点之前,线段在扫描线上的次序不变;碰到一个交点,则交点对应的两条线段交换扫描线上的次序
碰到下一个结束端点,则需要删除它所在的线段

比较抽象,画图比较好懂,百度文库中有此ppt


poj1066

每条线段中点为门,问进入矩形中特定点,最少经过几个点

#include <cstdio>
#include <cstdlib>
#include <cstring>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值