計算幾何 圓與三角形是否相交

2021-10-13 19:13:41 字數 869 閱讀 3267

把三角形的每條邊單獨判斷,先判斷兩個點是否都在裡面,是否乙個點在裡面乙個點在外面,直接return。

然後判斷點到直線的距離是否小於等於r,是的話用餘弦定理判斷和圓是否有交點,原理畫圖就能明白,如果沒有交點的話在圓外的兩個角必定有乙個是鈍角,用餘弦定理判斷是否小於0即可。

順便一提,如果不需要用到double型別就都用long long型別,提高精度,點積叉積兩點間距離的平方都是整數。

#include

using

namespace std;

typedef

long

long ll;

struct vecc;

ll r;

ll dot

(const vec &a,

const vec &b)

ll cross

(const vec &a,

const vec &b)

vec sub

(const vec &a,

const vec &b);}

ll dist2

(const vec &a,

const vec &b)

bool

judge

(const vec &a,

const vec &b)

inline ll in()

while

(c>=

'0'&&c<=

'9') res=res*

10+c-

48,c=

getchar()

;return p*res;

}int

main()

return0;

}

圓與三角形(圓與三角形是否相交)

給出圓的圓心和半徑,以及三角形的三個頂點,問圓同三角形是否相交。相交輸出 yes 否則輸出 no 三角形的面積大於0 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試資料。4 1 三個數,前兩個數為圓心的座標xc,yc,第3個數為圓的半徑r。3000 xc,yc ...

判斷三角形與圓是否相交

include include includeusing namespace std struct p struct circle int cmp double x 誤差處理 bool judge double a,double b,double c,double x1,double x2 一元二次...

1298 圓與三角形(計算幾何)

input 第1行 乙個數t,表示輸入的測試數量 1 t 10000 之後每4行用來描述一組測試資料。4 1 三個數,前兩個數為圓心的座標xc,yc,第3個數為圓的半徑r。3000 xc,yc 3000,1 r 3000 4 2 2個數,三角形第1個點的座標。4 3 2個數,三角形第2個點的座標。4...