1/*uva 10969計算幾何
2這道題和la2572相似,但相對簡單些。
3思路:求圓間的交點,順序列舉出圓上的圓弧,中點判斷是否被覆蓋。4*/
5 #include 6 #include 7 #include
8 #include 9 #include 10 #include
11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include
19 #include 20
#define inf 0x3f3f3f3f
21#define eps 1e-7
22#define eps2 1e-3
23using
namespace
std;
2425
struct
point
2629 point(double xx,double
yy)30
34};
35struct
circle
3640 circle(point o1,double
r1)41
45 point point(double
a)46
49};
50typedef point vector;
5152
bool
operator==(point a,point b)
5357 vector operator-(point a,point b)//
表示a指向b
5861 vector operator*(vector a,double
k)62
65 vector operator+(point a,point b)//
表示a指向b
6669
double
dot(vector a,vector b)
7073
double
length(vector a)
7477
double
cross(vector a,vector b)
7881
int dcmp(double
x)82
87double
angle(vector v)
8891
double normal(double
rad)
9295
96 point getmid(double a,double b,double r,double x,double y)//
圓上兩點,獲得中點的座標
97104
bool pincircle(point p,circle c)//
判斷點在圓內
105110
void getcircleinter(point c1,double r1,point c2,double r2,vector&rad)
111121
122int
n;123 circle cc[110];//
圓124 vector arf[110];//
圓心角125
126int
cas;
127int
main()
128140
for(int i=1; i<=n; i++)
141142
for(int i=1; i<=n; i++)//
獲得圓上的交點的角度
143for(int j=1; j<=n; j++)
144getcircleinter(cc[i].o,cc[i].r,cc[j].o,cc[j].r,arf[i]);
145146
for(int i=1; i<=n; i++) //
列舉n個圓上的圓弧
147161
}162
163 printf("
%.3lf\n
",(ans));//
放縮回來
164}
165return0;
166 }
uva 11178 計算幾何
函式較多,作為模板。include include include using namespace std struct point 定義點的時候直接利用建構函式,很方便 typedef point vector 這裡因為向量都有兩個維度的有序參量 vector operator vector a,...
UVA 11178 計算幾何
題目大意 求乙個三角形中每個內角的角三等分線組成的三角形的三個點的座標 題目解析 沒有演算法可言,直接上模板 ac includeusing namespace std struct point typedef point vector vector operator vector a,vector...
計算幾何 圓與圓的交點座標
給出兩圓的圓心座標和半徑,求出兩圓交點的座標 如下圖 可根據餘弦定理求出角a的大小,再根據函式atan2 可求出向量c1c2的方位角t 這樣一來,我們所求的交點就是以圓心c1.c為起點,大小為c1.r 角度為 t a 和 t a 的兩個向量 include include includeusing ...