careercup-数学与概率

7.3 给定直角坐标系上的两条线,确定这两条线会不会相交。

解法:

此题有很多不确定的地方:两条线的格式是什么?两条线实为同一条怎么处理?这些含糊不清的地方最好跟面试官讨论一下。

下面将做出以下假设:

若两条线是相同的(斜率和y轴截距相等),则认为这两条线相交;

两条线若不平行则必相交。因此,要检查两条线相交与否,我们只需检查两者的斜率是否相同,或是否为同一条。

实现代码:

#include<iostream>
#include<cmath>
using namespace std;

class line{
public:
    static  double epsilon;
    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;

    }
};
double line::epsilon=0.000001;
int main()
{
    line line1(1,2);
    line line2(1,2);
    cout<<line1.intersect(line2)<<endl;
}
原文地址:https://www.cnblogs.com/wuchanming/p/4148891.html