【计算几何初步:多边形中心】【HDU1115】Lifting the Stone
2014-11-25 19:46
183 查看
一.质点系重心公式
x=(x1*m1+x2*m2+x3*m3.....xn*mn)/M (M=m1+m2+m3+m4...+mn)
二.三角形重心
可直接求得,但在多边形剖分中 各三角形的质点的质量大小不一样 质量大小等于三角形面积.
三.多边形重心
三角形剖分+任意点的三角形剖分+三角形重心+质点系重心公式+任意点的三角形剖分
所以很容易知道一种很优美的计算公式(看代码)
x=(x1*m1+x2*m2+x3*m3.....xn*mn)/M (M=m1+m2+m3+m4...+mn)
二.三角形重心
可直接求得,但在多边形剖分中 各三角形的质点的质量大小不一样 质量大小等于三角形面积.
三.多边形重心
三角形剖分+任意点的三角形剖分+三角形重心+质点系重心公式+任意点的三角形剖分
所以很容易知道一种很优美的计算公式(看代码)
#include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <ctime> #include <algorithm> #include <iostream> #include <sstream> #include <string> #define oo 0x13131313 #define maxn 1000000+10 using namespace std; struct point{ double x,y; }; point A[maxn]; int N; double ansX,ansY; double Sarea; void input() { ansX=0;ansY=0;Sarea=0; cin>>N; for(int i=1;i<=N;i++) { scanf("%lf%lf",&A[i].x,&A[i].y); } } void init() { freopen("a.in","r",stdin); freopen("a.out","W",stdout); } void get_Sarea() { for(int i=1;i<=N;i++) { int j=i+1; if(j==N+1) j=1; Sarea+=(A[i].x*A[j].y-A[j].x*A[i].y)*0.5; } } void get_ansXansY() { for(int i=1;i<=N;i++) { int j=i+1; if(j==N+1) j=1; double area=(A[i].x*A[j].y-A[j].x*A[i].y)*0.5; ansX+=area*(A[i].x+A[j].x); // area*(A[i].x+A[j].x+0)/3 质点的重量 ansY+=area*(A[i].y+A[j].y); } ansX=ansX/(3*Sarea); ansY=ansY/(3*Sarea); } int main() { int T; cin>>T; while(T--) { input(); get_Sarea(); get_ansXansY(); printf("%.2lf %.2lf\n",ansX,ansY); } return 0; }
相关文章推荐
- 【计算几何初步:多边形中心】【HDU1115】Lifting the Stone
- NYOJ3—多边形重心问题(计算几何)&&hdu1115 Lifting the Stone
- 计算几何——HDUOJ 1115 - Lifting the Stone(计算多边形重心 / 多边形面积)
- [HDU1115]Lifting the Stone(计算几何-三角形的[心]+角度计算+旋转)
- hdu 1115:Lifting the Stone(计算几何,求多边形重心。 过年好!)
- Lifting the Stone 计算几何 多边形求重心
- HDU 1115 Lifting the Stone 计算几何(多边形找重心)
- hdu1115 Lifting the Stone(几何,求多边形重心模板题)
- Lifting the Stone(hdu1115)多边形的重心
- hdu 1115 Lifting the Stone(计算几何(重心))
- HDU1115_Lifting the Stone_凹凸多边形重心_可作为模板
- hdu1115 Lifting the Stone 多边形重心
- HDOJ 1115 Lifting the Stone 【计算几何】
- hdu1115 Lifting the Stone(几何,求多边形重心模板题)
- Lifting the Stone(hdu1115)多边形的重心
- [POJ 1385] Lifting the Stone (计算几何)
- HDU 1115 Lifting the Stone(计算几何)
- hdu1115 Lifting the Stone(求多边形重心)
- hdu 1115 Lifting the Stone 多边形的重心
- [ACM] hdu Lifting the Stone(多边形的重心)