求相交点

 /*
线段相交模板:判相交、求交点
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h> const double eps = 1e-;
struct Point{
double x,y;
};
Point P_ans;
double cross( Point a,Point b,Point c ){
return ( b.x-a.x )*( c.y-a.y )-( b.y-a.y )*( c.x-a.x );
}
int solve( Point a,Point b,Point c,Point d ){
if( fabs(cross(a,b,c))<=eps&&fabs(cross(a,b,d))<=eps )
return -;//两条线段在同一条直线上
if( fabs((b.x-a.x)*(d.y-c.y)-(b.y-a.y)*(d.x-c.x))<=eps )
return ;//两条线断平行
/*
求交点用到叉积(必须保证有交点)
交点为p0(x,y)
(A-p0)*(B-p0)=0
(C-p0)*(D-p0)=0
*/
double a1,a2,b1,b2,c1,c2;
a1 = a.y-b.y,b1 = b.x-a.x,c1 = a.x*b.y-b.x*a.y;
a2 = c.y-d.y,b2 = d.x-c.x,c2 = c.x*d.y-d.x*c.y;
P_ans.x = (b1*c2-b2*c1)/(a1*b2-a2*b1);
P_ans.y = (a2*c1-a1*c2)/(a1*b2-a2*b1);
return ;
}
int main(){
int n;
Point p1,p2,p3,p4;
scanf("%d",&n);
printf("INTERSECTING LINES OUTPUT\n");
while( n-- ){
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p1.x,&p1.y,&p2.x,&p2.y,&p3.x,&p3.y,&p4.x,&p4.y);
int f = solve( p1,p2,p3,p4 );
if( f==- ) puts("LINE");
else if( f== ) puts("NONE");
else{
printf("POINT %.2lf %.2lf\n",P_ans.x,P_ans.y);
}
}
printf("END OF OUTPUT\n");
return ;
}

POJ1269+直线相交的更多相关文章

  1. poj2074Line of Sight(直线相交)

    链接 几何细节题. 对于每一个障碍物可以求出它在地产线上的覆盖区间,如下图. 紫色部分即为每个障碍物所覆盖掉的区间,求出所有的,扫描一遍即可. 几个需要注意的地方:直线可能与地产线没有交点,可视区间可 ...

  2. 直线相交 POJ 1269

    // 直线相交 POJ 1269 // #include <bits/stdc++.h> #include <iostream> #include <cstdio> ...

  3. 判断线段和直线相交 POJ 3304

    // 判断线段和直线相交 POJ 3304 // 思路: // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. #include <cstdio ...

  4. poj 1556 zoj1721 BellmanFord 最短路+推断直线相交

    http://poj.org/problem?id=1556 The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions ...

  5. POJ 1269 Intersecing Lines (直线相交)

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

  6. POJ3304 Segments 【线段直线相交】

    题意: 给出n条线段两个端点的坐标,问所有线段投影到一条直线上,如果这些所有投影至少相交于一点就输出Yes!,否则输出No!. 思路: 计算几何.这道题要思考到两点: 1:把问题转化为是否存在一条直线 ...

  7. poj 1127(直线相交+并查集)

    Jack Straws Description In the game of Jack Straws, a number of plastic or wooden "straws" ...

  8. POJ 1039 Pipe【经典线段与直线相交】

    链接: http://poj.org/problem?id=1039 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...

  9. [poj] 1066 Treasure Hunt || 判断直线相交

    原题 在金字塔内有一个宝藏p(x,y),现在要取出这个宝藏. 在金字塔内有许多墙,为了进入宝藏所在的房间必须把墙炸开,但是炸墙只能炸每个房间墙的中点. 求将宝藏运出城堡所需要的最小炸墙数. 判断点和直 ...

随机推荐

  1. 【转】adb uninstall卸载apk文件说明

    昨天在使用adb卸载程序,结果死活卸载不了.我输入的命令和系统提示如下: [plain] view plaincopy   arthur@arthur-laptop:~$ adb uninstall  ...

  2. SharePoint移动客户端对比 ---Rshare 无疑是最好用的

    目前市面上SharePoint移动客户端确实不少,但经过使用后的对比,Rshare无论在界面上还是在操作性上都占据了优势.大家可以下载进行尝试.

  3. react ie10下报错

    解决办法: 加 promise polyfill 参考地址:http://hao.jser.com/archive/12066/

  4. Linux find常见用法示例

    find命令的参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.-print: find命令将匹配的文件输出到标准输出.-exec: find命令 ...

  5. C--指针函数,static

    (*p)是固定写法,代表指针的变量P将来是指向函数 void (*p)(); p=test;//指针变量P指向了test函数 函数名test代表函数地址 //同等调用test()函数 (*p)(); ...

  6. dorado中的creationType选择类型

    新建model层中 DataType类型的时候,有几个属性creationType,matchType时候需要在右侧选择对应的javaBean,这是时候要在弹出的对话框搜索. 此时,只要搜索javaB ...

  7. 虚拟机单一网卡设置两个IP

    一.在虚拟机里修改虚拟网卡配置 cd /ect/sysconfig/network-scripts/ vi ifcfg-eth0 改BOOTPROTO=static cp ifcfg-eth0 ifc ...

  8. <UNIX环境高级编程>文件共享及fork函数

    UNIX系统支持在不同进程间共享打开文件.内核使用3种数据结构表示打开文件,它们之间的关系决定了文件共享方面一个进程对另一个进程可能产生的影响. 内核维持了3个表,即进程表,文件表和v节点表.具体如下 ...

  9. Spring 官方下载地址(非Maven)

    现在spring的官网停止了使用zip包下载,只能使用maven,非常的不方便,分享如下网址可以使用zip包下载,是不是方便多了!~ 下载列表如下: spring-framework-3.2.8.RE ...

  10. oracle,wamp,FZ突然出现问题,求解决方案(未解决,最终系统还原)

    -----背景------- 系统:win7  64位oracle 11g(11.1)每天都用oracle.用toad for oracle .电脑固定IP.未更改任何配置信息.用了几个月,突然出现了 ...