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. 《第一行代码——Android》

    <第一行代码——Android> 基本信息 作者: 郭霖 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115362865 上架时间:2014-7-14 出版日期:2014 ...

  2. hibernate取出count(*)的办法

    1.定义查询语句    String sql="select count(*) from ExcelInfor";2.获取count(*)返回结果: (1)int count=In ...

  3. java 接收 char字符型

    import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Scanner; public clas ...

  4. MyEclipse中SVN的常见的使用方法

    本次主要内容: 一 .导入项目 (Checkout).从svn资源库检出 二 .更新 (Update) 三.锁(对要修改的文件加锁,防止文件冲突) 四.提交(项目修改后的提交) 五.解锁 六.查看历史 ...

  5. HttpURLConnection发送POST请求(可包含文件)

    import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io. ...

  6. JMS介绍入门大白话版

    以下内容转自: http://setting.iteye.com/blog/1097767 ------------------------------------------------------ ...

  7. Memcached内存分配优化及使用问题

    前几天做了个Memcached的思考,并测试了一些数据,是关于如何提高Memcached内存使用率的问题.在启动memcached的时候可以加-f参数和-n参数.-f指定各slab里面chunk大小的 ...

  8. leetcode_401_Binary Watch_回溯法_java实现

    题目: A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bot ...

  9. 使用LVS实现负载平衡之Windows Server 2008配置

    LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.承载于 II ...

  10. 【读书笔记《Android游戏编程之从零开始》】11.游戏开发基础(SurfaceView 游戏框架、View 和 SurfaceView 的区别)

    1. SurfaceView 游戏框架实例 实例效果:就是屏幕上的文本跟着点击的地方移动,效果图如下: 步骤: 新建项目“GameSurfaceView”,首先自定义一个类"MySurfac ...