int overlap(float* a_, float* b_)//判断两条线段是否重合
{
if (contains(a_[0],b_)) return 1;
if (contains(a_[1],b_)) return 1;
if (contains(b_[0],a_)) return 1;
if (contains(b_[1],a_)) return 1;
return 0;
}
contains(n,a)是判断n是否在闭区间a内,如果在,就返回1;
想知道float* a_, float* b_是什么意思?谢谢
float类型的指针
是一个指针,指向浮点类型。
指向单精度浮点数的指针
float *a表示指向单浮点数类型的指针,*b也是表示指向单浮点数的指针。a[0]表示这串地址里的第一个参数,也就是值。
a[1]表示这串地址里的第二个数据,以此类推,单个a传的就是地址
一个指向 float类型的指针
既然是判断两条线段是否重合,那么只需要判断这两条线段的端点坐标是否分别相互包含即可。
*a_,就是包含第一条线段的两个端点坐标的指针(严格来说是数组,该数组两个元素分别是线段的两个端点坐标)
*b_ , 同理。
上面的代码应该是有问题的,以为该代码运行只要满足四个判定条件的任意一个就会返回结果1,也就是说,满足了第一个if() 之后就会return 1;,然后下面的就不会判断了,这显然是不对的。正确的应该是必须同时满足这四个条件才会返回1.代码修改很简单,不明白可以再问我。