判断点区间是否有重叠区间

其实只要满足max(A.start,B.start)<=min(A.end,B,end),即可判断A,B重叠。

procedure JudgeAreaState(V1, V2, V3, V4:Single;var CompareState:Integer);
var
MaxValue,MinValue:Single;
StartA,StartB,EndA,EndB:Single;
begin
CompareState:= 0; //0 两区域无公共区域 1:两区域相同 2 两区域有重叠
//v1,v2,第一个区域的起止值 v3,v4,第二个区域的起止值
// 其实只要满足max(A.start,B.start)<=min(A.end,B,end),即可判断A,B重叠。
StartA:= Min(V1,V2);
EndA:= Max(V1,V2);
StartB:= Min(V3,V4);
EndB:= Max(V3,V4);
MaxValue:= Max(StartA,StartB);
MinValue:= Min(EndA,EndB);

if Abs(MaxValue-MinValue)<0.1 then
begin
CompareState:=0 ;
end else
begin

if (Abs(StartA-StartB)<0.1) and (Abs(EndA-EndB)<0.1) then
CompareState:=1
else
CompareState:=2;

end;
end;

原文地址:https://www.cnblogs.com/jeenmablog/p/11394039.html