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 -13 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...