[CareerCup] 7.3 Line Intersection 直线相交

简介:

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;
    }  
};

本文转自博客园Grandyang的博客,原文链接:直线相交[CareerCup] 7.3 Line Intersection ,如需转载请自行联系原博主。

相关文章
|
算法 图形学 计算机视觉
凸多边形(Convex Polygon
凸多边形(Convex Polygon)是一个几何概念,它指的是一个多边形,其内部的所有点都位于多边形的外部。简单来说,凸多边形是一个内部没有凹陷的多边形。
382 7
|
4月前
|
算法 C++
平面中判断线段与矩形是否相交
平面中判断线段与矩形是否相交
70 0
G2Plot Line 线性 x 轴头尾两头不留空白(或指定留白范围)
G2Plot Line 线性 x 轴头尾两头不留空白(或指定留白范围)
123 0
判断线段是否相交
判断线段是否相交
94 0
【欧拉计划第 11 题】 网格中的最大乘积 Largest product in a grid
【欧拉计划第 11 题】 网格中的最大乘积 Largest product in a grid
176 0
【欧拉计划第 11 题】 网格中的最大乘积 Largest product in a grid
|
算法
Halcon拟合系列(2)直线/圆/椭圆/矩形拟合算子fit_line_contour_xld/fit_circle_contour_xld/...
Halcon拟合系列(2)直线/圆/椭圆/矩形拟合算子fit_line_contour_xld/fit_circle_contour_xld/...
2277 0

热门文章

最新文章