double rotating_calipers(point *poi,int n)
{
int q=1;//第一个的对踵点是第二个(初始化)
double ans=0;//答案清零
poi[n]=poi[0];//最后一个点是它本身 (防+1溢出)
for(int p=0;p<n;p++)//找所有点
{
while(cha(poi[p+1],poi[q+1],poi[p])>cha(poi[p+1],poi[q],poi[p]))//找三角形面积最大的:枚举法
q=(q+1)%n;//不忘模n
ans=max(ans,max(dist(poi[p],poi[q]),dist(poi[p+1],poi[q+1])));//三角形两边找一个最大的(还要处理p+1和q+1是防止平行)
}
return ans;
}
{
int q=1;//第一个的对踵点是第二个(初始化)
double ans=0;//答案清零
poi[n]=poi[0];//最后一个点是它本身 (防+1溢出)
for(int p=0;p<n;p++)//找所有点
{
while(cha(poi[p+1],poi[q+1],poi[p])>cha(poi[p+1],poi[q],poi[p]))//找三角形面积最大的:枚举法
q=(q+1)%n;//不忘模n
ans=max(ans,max(dist(poi[p],poi[q]),dist(poi[p+1],poi[q+1])));//三角形两边找一个最大的(还要处理p+1和q+1是防止平行)
}
return ans;
}