日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单多边形与圆交面积模板

發布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单多边形与圆交面积模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 /* 2 求多邊形與圓相交的面積 3 */ 4 5 #include <iostream> 6 #include <cstdio> 7 #include <cmath> 8 #define max(x,y) ((x)>(y)?(x):(y)) 9 #define min(x,y) ((x)<(y)?(x):(y)) 10 #define PI acos(-1.0) 11 #define EPS 1e-10 12 using namespace std; 13 14 inline int DB(double x) { 15 if(x<-EPS) return -1; 16 if(x>EPS) return 1; 17 return 0; 18 } 19 20 21 struct point { 22 double x,y; 23 24 point() {} 25 point(double _x,double _y):x(_x),y(_y) {} 26 27 point operator-(point a) { 28 return point(x-a.x,y-a.y); 29 } 30 point operator+(point a) { 31 return point(x+a.x,y+a.y); 32 } 33 34 double operator*(point a) { 35 return x*a.y-y*a.x; 36 } 37 38 point oppose() { 39 return point(-x,-y); 40 } 41 42 double length() { 43 return sqrt(x*x+y*y); 44 } 45 46 point adjust(double L) { 47 L/=length(); 48 return point(x*L,y*L); 49 } 50 51 point vertical() { 52 return point(-y,x); 53 } 54 55 double operator^(point a) { 56 return x*a.x+y*a.y; 57 } 58 }; 59 60 61 struct segment { 62 point a,b; 63 64 segment() {} 65 segment(point _a,point _b):a(_a),b(_b) {} 66 67 point intersect(segment s) { 68 double s1=(s.a-a)*(s.b-a); 69 double s2=(s.b-b)*(s.a-b); 70 double t=s1+s2; 71 s1/=t; 72 s2/=t; 73 return point(a.x*s2+b.x*s1,a.y*s2+b.y*s1); 74 } 75 point vertical(point p) { 76 point t=(b-a).vertical(); 77 return intersect(segment(p,p+t)); 78 } 79 int isonsegment(point p) { 80 return DB(min(a.x,b.x)-p.x)<=0&& 81 DB(max(a.x,b.x)-p.x)>=0&& 82 DB(min(a.y,b.y)-p.y)<=0&& 83 DB(max(a.y,b.y)-p.y)>=0; 84 } 85 }; 86 87 struct circle { 88 point p; 89 double R; 90 }; 91 92 circle C; 93 point p[105]; 94 int n; 95 96 97 double cross_area(point a,point b,circle C) { 98 point p=C.p; 99 double R=C.R; 100 int sgn=DB((b-p)*(a-p)); 101 double La=(a-p).length(),Lb=(b-p).length(); 102 int ra=DB(La-R),rb=DB(Lb-R); 103 double ang=acos(((b-p)^(a-p))/(La*Lb)); 104 segment t(a,b); 105 point s; 106 point h,u,temp; 107 double ans,L,d,ang1; 108 109 if(!DB(La)||!DB(Lb)||!sgn) ans=0; 110 else if(ra<=0&&rb<=0) ans=fabs((b-p)*(a-p))/2; 111 else if(ra>=0&&rb>=0) { 112 h=t.vertical(p); 113 L=(h-p).length(); 114 if(!t.isonsegment(h)||DB(L-R)>=0) ans=R*R*(ang/2); 115 else { 116 ans=R*R*(ang/2); 117 ang1=acos(L/R); 118 ans-=R*R*ang1; 119 ans+=R*sin(ang1)*L; 120 } 121 } else { 122 h=t.vertical(p); 123 L=(h-p).length(); 124 s=b-a; 125 d=sqrt(R*R-L*L); 126 s=s.adjust(d); 127 if(t.isonsegment(h+s)) u=h+s; 128 else u=h+s.oppose(); 129 if(ra==1) temp=a,a=b,b=temp; 130 ans=fabs((a-p)*(u-p))/2; 131 ang1=acos(((u-p)^(b-p))/((u-p).length()*(b-p).length())); 132 ans+=R*R*(ang1/2); 133 } 134 return ans*sgn; 135 } 136 137 double cal_cross(circle C,point p[],int n) { 138 double ans=0; 139 int i; 140 p[n]=p[0]; 141 for(i=0; i<n; i++) ans+=cross_area(p[i],p[i+1],C); 142 return fabs(ans); 143 } 144 145 double x,y,v,det,t,g,R; 146 147 int input() { 148 scanf("%lf%lf%lf%lf%lf%lf%lf",&x,&y,&v,&det,&t,&g,&R); 149 return x||y||v||det||t||g||R; 150 } 151 152 153 int main() { 154 //freopen("test.in","r",stdin); 155 while(input()) { 156 scanf("%d",&n); 157 int i; 158 for(i=0; i<n; i++) scanf("%lf%lf",&p[i].x,&p[i].y); 159 det=det/180*PI; 160 C.R=R; 161 C.p.x=x+v*cos(det)*t; 162 C.p.y=y+v*sin(det)*t-0.5*g*t*t; 163 double area=cal_cross(C,p,n); 164 printf("%.2lf\n",area); 165 } 166 return 0; 167 } View Code

轉自:http://blog.csdn.net/acm_baihuzi/article/details/48473725

多邊形面積求法:https://www.cnblogs.com/xiexinxinlove/p/3708147.html

轉載于:https://www.cnblogs.com/zmin/p/8329118.html

總結

以上是生活随笔為你收集整理的简单多边形与圆交面积模板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本黄色动态图 | 夜夜撸 | 少妇乱淫36部 | 97视频入口| 嫩草一区 | 成人夜视频 | 999精品网站| aa片在线观看视频在线播放 | 三级a毛片 | 草草在线观看视频 | 中文字幕三级电影 | 中文免费av | 亚洲婷婷久久综合 | 最近免费中文字幕大全免费版视频 | 极品美女无套呻吟啪啪 | 麻豆一区产品精品蜜桃的特点 | 97精品国产97久久久久久粉红 | 日韩欧美视频在线 | 天天射日日干 | 蜜桃av噜噜一区二区三区麻豆 | 成人在线观看国产 | 日韩一二三四五区 | 精品国产午夜 | 日韩午夜激情视频 | 嫩草影院一区 | 日韩av免费在线看 | 中文字幕免费高清 | 又黄又爽视频在线观看 | 青青草免费公开视频 | 韩国色网| 国产香蕉在线 | 国产精品欧美激情在线 | 女人和拘做爰正片视频 | jizzjizz欧美69巨大 | 伊人春色影院 | 麻豆网| av一区二区三区免费观看 | 国产黄色片视频 | 浓精喷进老师黑色丝袜在线观看 | 日韩精品美女 | 黑人巨大精品欧美一区二区免费 | 六月婷婷综合 | 黄色在线观看视频网站 | 99精品国产一区二区 | 国产精品成人一区二区 | 国产青草视频 | 国产xxxx18| 久久成年人 | 国产3p露脸普通话对白 | 欧美日韩国产成人在线 | 国产精品婷婷 | 国产一区啪啪 | 91在线免费看片 | 久久色网 | 日韩av免费一区 | 玖操 | 下面一进一出好爽视频 | 日韩精品片 | 日本福利一区 | 国产av一区精品 | 日韩在线1 | 人妻无码一区二区三区 | 中文字幕少妇 | 国产在线色站 | 亚洲aa在线观看 | 亚洲精品播放 | 美女日批在线观看 | 欧美日韩亚洲国产一区 | 91麻豆国产精品 | 国产精品网站在线 | 国产成人一区二区三区免费看 | 手机看片福利在线 | 国内少妇精品 | mm视频在线观看 | 91免费版黄色 | 国产又大又粗又硬 | 一级特毛片 | 中国极品少妇videossexhd 就要干就要操 | 天堂最新| 叶山小百合av一区二区 | 免费日韩一区二区 | 娇小tube性极品娇小 | 黄网站免费入口 | 男男毛片 | 久久国产精品久久精品国产 | 日本三级播放 | 日本视频不卡 | 亚洲一区二区成人 | 国产网站免费观看 | 一本大道久久a久久综合婷婷 | 国产性生活一级片 | 国产成人无码专区 | 99久久久无码国产精品不卡 | 四虎国产视频 | 日韩不卡视频在线观看 | 呦呦网 | 污视频网站免费在线观看 | 黄色大片网址 | 毛茸茸多毛bbb毛多视频 |