Intersecting Lines--POJ1269(判断两条直线的关系 && 求两条直线的交点)
http://poj.org/problem?id=1269
我今天才知道原来标准的浮点输出用%.2f 并不是%.2lf 所以wa了好几次
题目大意: 就给你两个线段 然后求这两个线段所在的直线的关系 有共线 平行 和相交
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<math.h>
#define N 200
const double ESP = 1e-;
struct Point
{
double x, y; Point(double x=,double y=):x(x),y(y) {}
Point operator + (const Point &temp)const{
return Point(x+temp.x, y+temp.y);
}
Point operator - (const Point &temp)const{
return Point(x-temp.x, y-temp.y);
}
bool operator == (const Point &temp)const{
return (fabs(x-temp.x) < ESP && fabs(y-temp.y) < ESP);
}
int operator * (const Point &temp)const{
double t=(x*temp.y)-(y*temp.x);
if(t > ESP)
return ;
if(fabs(t) < ESP)
return ;
return -;
}
}; struct node
{
Point A,B;
node(Point A=,Point B=):A(A),B(B){} }; Point line(Point u1,Point u2,Point v1,Point v2)///求交点模板
{
Point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x)); ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t; return ret;
} int main()
{
int n;
scanf("%d",&n);
printf("INTERSECTING LINES OUTPUT\n");
while(n--)
{
Point p[];
node a[];
double x1,x2,x3,x4,y1,y2,y3,y4;
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
p[]=Point(x1,y1);
p[]=Point(x2,y2);
p[]=Point(x3,y3);
p[]=Point(x4,y4);
a[]=node(p[],p[]);
a[]=node(p[],p[]);
if(fabs((a[].A-a[].A)*(a[].B-a[].A))== && fabs((a[].B-a[].A)*(a[].B-a[].A))==)///判断共线 如果a[1]的两个点都在直线a[2]上 就说明共线
printf("LINE\n");
else
{
if(fabs((y2-y1)*(x4-x3)-(y4-y3)*(x2-x1))<ESP)///如果不共线 并且斜率相等的话 就说明是平行
printf("NONE\n");
else///求交点
{
Point d;
d=line(p[],p[],p[],p[]);
printf("POINT %.2f %.2f\n",d.x,d.y);
}
}
}
printf("END OF OUTPUT\n");
return ;
}
Intersecting Lines--POJ1269(判断两条直线的关系 && 求两条直线的交点)的更多相关文章
- c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode
#include <stdio.h> #include <math.h> #include <string.h> char explode( char * str ...
- POJ1269:Intersecting Lines(判断两条直线的关系)
题目:POJ1269 题意:给你两条直线的坐标,判断两条直线是否共线.平行.相交,若相交,求出交点. 思路:直线相交判断.如果相交求交点. 首先先判断是否共线,之后判断是否平行,如果都不是就直接求交点 ...
- POJ 1269 Intersecting Lines(判断两直线位置关系)
题目传送门:POJ 1269 Intersecting Lines Description We all know that a pair of distinct points on a plane ...
- POJ 1269 Intersecting Lines【判断直线相交】
题意:给两条直线,判断相交,重合或者平行 思路:判断重合可以用叉积,平行用斜率,其他情况即为相交. 求交点: 这里也用到叉积的原理.假设交点为p0(x0,y0).则有: (p1-p0)X(p2-p0) ...
- LCA最近公共祖先模板(求树上任意两个节点的最短距离 || 求两个点的路进(有且只有唯一的一条))
原理可以参考大神 LCA_Tarjan (离线) TarjanTarjan 算法求 LCA 的时间复杂度为 O(n+q) ,是一种离线算法,要用到并查集.(注:这里的复杂度其实应该不是 O(n+q) ...
- 求前n项的斐波那契数列、求两个数的最小公倍数、求两个数的最大公约数
class Fib(object): def __call__(self,n): a=[0,1] for i in range(n-2): an ...
- C++ 根据两点式方法求直线并求两条直线的交点
Line.h #pragma once //Microsoft Visual Studio 2015 Enterprise //根据两点式方法求直线,并求两条直线的交点 #include"B ...
- 判断两条直线的位置关系 POJ 1269 Intersecting Lines
两条直线可能有三种关系:1.共线 2.平行(不包括共线) 3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...
- Intersecting Lines - POJ 1269(判断平面上两条直线的关系)
分析:有三种关系,共线,平行,还有相交,共线和平行都可以使用叉积来进行判断(其实和斜率一样),相交需要解方程....在纸上比划比划就出来了.... 代码如下: ================== ...
随机推荐
- SQL系列学习 基础数据
//班主任表 CREATE TABLE [dbo].[teacher]( [id] [int] IDENTITY(1,1) NOT NULL primary key, [name] [varchar] ...
- QT 学习笔记概述
以下笔记为在看书和实践的过程中的部分记录总结: 0. 窗口布局 1) 支持绝对布局和布局管理器布局; 2) 绝对布局不够灵活.无法自动调整大小,需要手动编写代码调整: 3) 布局管理器管理布局比较灵活 ...
- js join()和split()方法、reverse() 方法、sort()方法
############ join()和split()方法 join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. 指定分隔符方法join("#&q ...
- strict说明
- autoOpenBrowser: true, 运行npm后自动打开浏览器
autoOpenBrowser: true, 运行npm后自动打开浏览器
- docker 镜像管理操作
镜像特点 1. 分层存储的文件 2.一个软件运行环境 3.一个镜像可以创建多个容器 4.一种标准交付 5.不包含Linux内核而又精简的Linux操作系统 6.不是一个单一的文件而是由多层构成的,可以 ...
- Qt _六天的学习路线
六天的学习路线:第一天: 1.Qt的介绍 2.Qt的框架 3.项目文件(.pro) 4.第一个Qt程序(hello Qt) 5.父窗口和子窗口的区别(控件,部件,构件) ...
- JAVA中等待所有线程都执行结束(转2)
场景: package com.java4all.mypoint; import java.util.concurrent.CountDownLatch; public class ThreadTes ...
- Java集合系列之HashMap
概要 第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射.HashMap 继承于AbstractMap,实现了Map.Clo ...
- Report Builder 打开报错
提示:REP-0756:警告:找不到PL/SQL程序库’inv.pll’. 解决办法 处理:1.运行 ---输入REgedit ,在注册表内,查找注册表项Reports_path. 2.将下载的.pl ...