點到圓弧的距離

2021-08-27 11:46:17 字數 996 閱讀 3882

time limit1000 ms memory limit131072 kb

輸入包含最多10000組資料。每組資料報含8個整數x1, y1, x2, y2, x3, y3, xp, yp。圓弧的起點是a(x1,y1),經過點b(x2,y2),結束位置是c(x3,y3)。點p的位置是 (xp,yp)。輸入保證a, b, c各不相同且不會共線。上述所有點的座標絕對值不超過20。

對於每組資料,輸出測試點編號和p到圓弧的距離,保留三位小數。你的輸出和標準輸出之間最多能有0.001的誤差。

0 0 1 1 2 0 1 -1

3 4 0 5 -3 4 0 1

case 1: 1.414

case 2: 4.000

根據三點確定圓心和半徑,關鍵是確定扇形區域(尤其是優弧).

如果點跟圓心的連線在那段扇形的圓弧範圍內,點到圓弧的最短距離為點到圓心的距離減去半徑後的絕對值;否則,點到圓弧的最短的距離為到這段圓弧的兩個端點的最小值。

#include #include #include using namespace std;

double r, rx, ry, p_a, p_b, p_c, p_r;

void get_c(int x1, int y1, int x2, int y2, int x3, int y3)

double get_l(int x1, int y1, int x2, int y2)

int main()

else

else

}if (temp)

printf("case %d: %.3lf\n", t++, fabs(p_r - r));

else printf("case %d: %.3lf\n", t++, min(p_a, p_c));

}return 0;

}

點到圓弧的距離

輸入包含最多10000組資料。每組資料報含8個整數x1,y1,x2,y2,x3,y3,xp,yp。圓弧的起點是a x1,y1 經過點b x2,y2 結束位置是c x3,y3 點p的位置是 xp,yp 輸入保證a,b,c各不相同且不會共線。上述所有點的座標絕對值不超過20。對於每組資料,輸出測試點編號...

點到線段的距離

最近由於工作任務的需要簡單研究了一下 1.可以列方程組,但太麻煩,繁瑣,不適合程式中執行 這種方法靠譜但還不夠精簡 3.用向量的方法,簡單實用,效率高。以下是我用as實現的 點到線段的距離 as 實現 var a point new point 0,0 線段起始點 var b point new p...

點到曲線的距離

1 正交 正交是直觀概念中垂直的推廣,如果兩個向量正交,則這兩個向量垂直,其點乘為0.2 點到隱曲線的距離 假設點座標為 dx,dy 曲線方程為f x,y 0,從隱曲線最近點 u,v 到該點的向量必垂直於曲線,因此可以通過尋找滿足下式的點獲得最近點 1 u,v 是曲線上的一點,滿足f u,v 0 2...