7月10号 计算几何 对向量叉积 判断两条直线是否相交的理解
2012-07-10 00:51
507 查看
今天羽哥给了我很大的打击啊~~决定a几道水果题,练练手,羽哥竟然把卷包裹法练的如火纯青了~~~嫉妒啊~~追赶上羽哥的步法啊~~
今天自己验证了一下对于两直线是否相交用叉积的判定;
例如两条直线,p1 p2, q1q2 来判断是否相交,则根据 q1p1 叉q1q2*q1q2叉q2p2 如果大于等于0则相交,否则不相交。
下面是判断代码:
今天自己验证了一下对于两直线是否相交用叉积的判定;
例如两条直线,p1 p2, q1q2 来判断是否相交,则根据 q1p1 叉q1q2*q1q2叉q2p2 如果大于等于0则相交,否则不相交。
下面是判断代码:
#include<stdio.h> typedef struct node{ int x,y; }point; point p1,p2,q1,q2; int result1,result2; int cross(point a,point b1,point b2) { int x1,y1,x2,y2; x1=a.x-b1.x; y1=a.y-b1.y; x2=b2.x-b1.x; y2=b2.y-b1.y; return x1*y2-x2*y1; } int main() { while(1) { scanf("%d %d",&p1.x,&p1.y); scanf("%d %d",&p2.x,&p2.y); scanf("%d %d",&q1.x,&q1.y); scanf("%d %d",&q2.x,&q2.y); result1=cross(p1,q1,q2); 注意cross中向量的顺序,要相减的向量放在前面; result2=cross(p2,q2,q1); printf("result1=%d result2=%d\n",result1,result2); if(result1*result2>=0)printf("YES\n"); // 叉乘后两向量的乘积大于0则相交 else printf("NO\n"); // 反之则不相交。 } }
相关文章推荐
- (计算几何step8.1.2.1)POJ 2653 Pick-up sticks(判断一根木棒的上面时候还有其他木棒——判断两条直线是否相交)
- 计算几何 --- 判断两条线段是否相交(平面内)
- 判断两条线段是否相交 计算几何
- poj Intersecting Lines 1269 (数学几何 判断两条直线是否相交)
- pku 1556 The Doors 计算几何 之 叉积判断线段是否相交
- 使用叉积判断两条直线是否相交
- POJ 3304 Segments (计算几何、判断直线与线段是否相交)
- 使用叉积判断两条线段是否相交
- 计算几何之判断两条线段相交
- FZU 1015 土地划分(判断两条直线是否相交)
- POJ 3304:Segments 计算几何 是否有直线与所有线段相交
- POJ 1039——计算几何初步(判断线段与直线相交)
- hduoj 1558 并查集、计算几何(判断两线断是否相交)
- 判断两条线段是否相交(叉积)
- 判断几个点是否在一条直线上(计算几何)
- POJ1269 简单的计算几何判断直线相交
- HDU 1086 You can Solve a Geometry Problem too(判断两条直线是否相交)
- (计算几何step8.1.2.2)POJ 1269 Intersecting Lines(使用叉积来计算两条直线的交点)
- POJ3304 计算几何--判断直线与线段相交
- 判断平面上两条直线是否相交