7.3 Given two lines on a Cartesian plane, determine whether the two lines would intersect.

这道题说是在笛卡尔坐标系中,让我们确定两条直线是否相交。

那么我们首先要写个直线的类来表示直线,最常见的表示方法为y=kx+b,k为斜率,b为与y轴的交点,然后我们来考虑什么情况下两条直线会相交,首先,如果两条直线完全重合的话,应该也算是相交的,其次如果两条直线不平行的话,那么也是相交的,那么我们判断相交条件主要基于这两点,首先看它们的斜率是否相等,如果斜率不相等,肯定是相交的,其次看它们的于y轴的交点是否相同,如果相同肯是相交的,这样就把两条直线重合的情况也包括了。还有需要注意的是,我们不能用int型来表示k和b,而且判断相等的时候最好也不要用'==',而是引入epsilon,赋一个超小值,只要两个数之差小于epsilon,我们就可认定它们相等,反之大于epsilon,则不等。

class Line {
public:
const static double _epsilon = 0.00001;
double _slope;
double _yintercept;
Line(double s, double y): _slope(s), _yintercept(y) {};
bool intersect(Line line2) {
return abs(_slope - line2._slope) > _epsilon || abs(_yintercept - line2._yintercept) < _epsilon;
}
};

[CareerCup] 7.3 Line Intersection 直线相交的更多相关文章

  1. Two analytical 2d line intersection in OpenCASCADE

    Two analytical 2d line intersection in OpenCASCADE eryar@163.com Abstract. OpenCASCADE geometric too ...

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

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

  3. Revit API判断直线相交关系移动风管

    start )             );         )) )) );         XYZ xyz12 = lCurve1.Curve.get_EndPoint();         XY ...

  4. poj 1269 Intersecting Lines(直线相交)

    Intersecting Lines Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8637   Accepted: 391 ...

  5. 2017 ACM-ICPC乌鲁木齐网络赛 B. Out-out-control cars(计算几何 直线相交)

    题目描述 Two out-of-control cars crashed within about a half-hour Wednesday afternoon on Deer Park Avenu ...

  6. poj2074Line of Sight(直线相交)

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

  7. 直线相交 POJ 1269

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

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

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

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

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

随机推荐

  1. Java之fianl修饰符

    fianl修饰的变量不可以改变,一旦获得初始值,该final变量的值就不能被重新赋值. 1.final成员变量(必需由程序员显式地指定初始值) 类变量:必须在静态初始化块中或者声明该变量时指定初始值, ...

  2. 双系统如何删除Linux,恢复Windows从MBR引导启动?

    嗯,现在愿意尝试Linux的人越来越多了.通常,如果一台电脑里已经装有了Windows,再装Linux,安装时,Linux的grub引导程 序就会覆盖掉保存在MBR当中的原来的Windows引导程序. ...

  3. 【SVN】Unable to connect to a repository at URL 'svn://localhost/Test'

    早上配置SVN,但是这次不是那么顺利... 环境: Windows 7 SVN服务器端:CollabNetSubversion-server-1.8.13-1 SVN客户端:TortoiseSVN_V ...

  4. forfiles命令批量删除N天前文件

    在整理手上几台SQL SERVER 2000的数据库备份时,一方面为了方便快速还原数据库,另外一方面为了备份冗余.备份方式统一(先备份到本地,然后收上磁带),将以前通过Symantec Backup ...

  5. Java异常信息处理

    import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.jun ...

  6. 在VS2010中使用Outlook工具栏

    参考资料:微软MSDN.VS2010示例代码 一开始上段子总是能活跃气氛,等哪天我再打开自己的这篇博客,总是能够让自己傻傻的乐一下. 我一女同学,毕业去一大公司应聘,竞争很激烈,最后剩下她和一位女士. ...

  7. Sublime text3中配置Github

    一.Git安装 到Git的 官网 上去下载相应环境的Git安装文件. 我的是win10,安装到D:\ProgramFiles\Git,在桌面右键出现下面两个红色框框就可以了. 二.Git配置及生成密钥 ...

  8. Java基础の乱弹琴二:break关键字

    Java中的break一般用于 跳出一个switch或者循环. 跳出switch基本不用赘述. break跳出循环一般是跳出当前一层循环. 如若需要跳出多层循环可以在break后加标签,然后把标签标注 ...

  9. (转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考

    昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"< ...

  10. Hbase step by step 完全分布式安装

    Step1: download and extract the packages: http://mirror.bit.edu.cn/apache/hbase/stable/ Step2: set t ...