HDU1086_You can Solve a Geometry Problem too_判断两线段相交
2011-11-06 02:08
459 查看
背景知识:
(2)跨立试验
题目大意:
让你输入n条线段的地点与终点的坐标,然后要求线段之间两两的相交点数目,计算交点是重合的也算哦。
解题思路:
根据上面的两线段之间关系的求解,用快速排斥原理跟跨立原理即可以搞定,注意:两线段要相交除了要满足快速排斥原理之外,必须满足线段a与线段b跨立,并且满足线段b与线段a跨立才行。
判断两线段是否相交:
我们分两步确定两条线段是否相交:
(1)快速排斥试验
设以线段 P1P2 为对角线的矩形为R, 设以线段 Q1Q2 为对角线的矩形为T,如果R和T不相交,显然两线段不会相交。
(2)跨立试验
如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ) 和( P2 - Q1 )位于矢量( Q2 - Q1 ) 的两侧,即( P1 - Q1 ) × ( Q2 - Q1 ) * ( P2 - Q1 ) × ( Q2 - Q1 ) < 0。上式可改写成( P1 - Q1 ) × ( Q2 - Q1 ) * ( Q2 - Q1 ) × ( P2 - Q1 ) > 0。当 ( P1 - Q1 ) × ( Q2 - Q1 ) = 0 时,说明 ( P1 - Q1 ) 和 ( Q2 - Q1 )共线,但是因为已经通过快速排斥试验,所以 P1 一定在线段 Q1Q2上;同理,( Q2 - Q1 ) ×(P2 - Q1 ) = 0 说明 P2 一定在线段 Q1Q2上。所以判断P1P2跨立Q1Q2的依据是:( P1 - Q1 ) × ( Q2 - Q1 ) * ( Q2 - Q1 ) × ( P2 - Q1 ) >= 0。同理判断Q1Q2跨立P1P2的依据是:( Q1 - P1 ) × ( P2 - P1 ) * ( P2 - P1 ) × ( Q2 - P1 ) >= 0。具体情况如下图所示:
题目大意:
让你输入n条线段的地点与终点的坐标,然后要求线段之间两两的相交点数目,计算交点是重合的也算哦。
解题思路:
根据上面的两线段之间关系的求解,用快速排斥原理跟跨立原理即可以搞定,注意:两线段要相交除了要满足快速排斥原理之外,必须满足线段a与线段b跨立,并且满足线段b与线段a跨立才行。
相关文章推荐
- You can Solve a Geometry Problem too (hdu1086)几何,判断两线段相交
- hdu1086 You can Solve a Geometry Problem too (判断两线段是否相交)
- You can Solve a Geometry Problem too (hdu1086)几何,判断两线段相交
- HDU 1086 You can Solve a Geometry Problem too (判断线段相交)
- hdu You can Solve a Geometry Problem too(判断两条线段相交)
- You can Solve a Geometry Problem too----判断两线段是否相交
- HDU1086:You can Solve a Geometry Problem too(线段相交模板)
- HDU 1086 You can Solve a Geometry Problem too(判断线段相交)
- HDU 1086 You can Solve a Geometry Problem too(判断线段是否相交,非规范相交)
- Hdu 1086 You can Solve a Geometry Problem too[判断线段相交,完整版]
- You can Solve a Geometry Problem too(判断两线段是否相交)
- HDU 1086.You can Solve a Geometry Problem too【判断两线段相交】【数学题】【12月30】
- HDU 1086 You can Solve a Geometry Problem too(水题,判断线段相交)
- hdu 1086:You can Solve a Geometry Problem too(计算几何,判断两线段相交,水题)
- hdoj 1086 You can Solve a Geometry Problem too (判断线段相交)
- HDU 1086 You can Solve a Geometry Problem too 判断任意两线段是否相交
- HDU 1086 You can Solve a Geometry Problem too(判断两线段是否相交)跨立实验
- hdu 1086 You can Solve a Geometry Problem too(线段相交的交点个数)
- HDU 1086 You can Solve a Geometry Problem too(判断两条直线是否相交)
- hdu_1086 You can Solve a Geometry Problem too(线段相交)