• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            PKU 3855 Blast the Enemy!

            注意!求解多邊形的質(zhì)心一般將其進行分解,然后用質(zhì)心*面積和/總面積求得總質(zhì)心
            Summary

            給出一個有n(n<=100)個點的簡單多邊形,求該多邊形的重心。

            Solution

            根據(jù)多邊形重心的定義,可以對其進行三角剖分,計算每個三角形的面積以及重心。多邊形的重心就是所有三角形的重心對面積的加權(quán)平均數(shù),也就是說:

            center.x = (cen[0].x * area[0] + cen[1].x * area[1] ..... + cen[n].x * area[n]) / totalarea

            center.y = (cen[0].y * area[0] + cen[1].y * area[1] ..... + cen[n].y * area[n]) / totalarea

            cen[i]代表第i個三角形的重心,三角形的重心就是:

            center_of_tri.x=(p1.x+p2.x+p3.x)/3.0

            center_of_tri.y=(p1.y+p2.y+p3.y)/3.0

            area[i]就是第i個三角形的面積。totalarea就是多邊形的總面積。

             1#include <cstdio>
             2#include <cmath>
             3#define EPS 1e-8
             4#define N 105
             5struct POINT {
             6    double x, y;
             7    POINT() {
             8        x = y = 0;
             9    }

            10    POINT(double x, double y) :
            11        x(x), y(y) {
            12    }

            13    void get() {
            14        scanf("%lf%lf"&x, &y);
            15    }

            16    void print() {
            17        printf("%.6lf %.6lf\n", x, y);
            18    }

            19    POINT operator+(const POINT &p) {
            20        return POINT(x + p.x, y + p.y);
            21    }

            22}
            ;
            23POINT pl[N];
            24int n;
            25double cross(POINT o, POINT &a, POINT &b) {
            26    return (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x);
            27}

            28int sgn(double x) {
            29    return x < -EPS ? -1 : x > EPS;
            30}

            31void solve() {
            32    int i;
            33    double area = 0;
            34    POINT ct;
            35    for (i = 0; i < n; i++)
            36        pl[i].get();
            37    pl[i] = pl[0];
            38    for (i = 0; i < n; i++{
            39        double s = cross(POINT(), pl[i], pl[i + 1]);
            40        POINT t;
            41        area += s;
            42        t = pl[i] + pl[i + 1];
            43        ct.x += s * t.x, ct.y += s * t.y;
            44    }

            45    ct.x = ct.x / area / 3.0, ct.y = ct.y / area / 3.0;
            46    ct.print();
            47}

            48int main() {
            49    int T = 1;
            50    while (scanf("%d"&n) && n) {
            51        printf("Stage #%d: ", T++);
            52        solve();
            53    }

            54    return 0;
            55}

            56

            posted on 2010-10-14 17:58 yzhw 閱讀(203) 評論(0)  編輯 收藏 引用 所屬分類: geometry&phycise

            <2011年3月>
            272812345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統(tǒng)計

            公告

            統(tǒng)計系統(tǒng)

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            国产精品美女久久久久久2018| 久久久精品2019免费观看| 国产无套内射久久久国产| 精品久久久久久久久久中文字幕 | 久久无码专区国产精品发布| 天天影视色香欲综合久久| 亚洲精品乱码久久久久久蜜桃不卡 | 国产精品久久网| 久久久久国产视频电影| 久久人人爽人人爽人人AV东京热| 久久99精品久久久久久| 精品国产青草久久久久福利| 久久久青草久久久青草| 久久久久久曰本AV免费免费| 国产L精品国产亚洲区久久| 久久亚洲中文字幕精品有坂深雪| 国产精品伊人久久伊人电影 | 久久中文娱乐网| 午夜精品久久久久久久久| 久久久久亚洲精品无码网址| AV色综合久久天堂AV色综合在| 亚洲人成电影网站久久| 亚洲精品高清国产一久久| 久久成人国产精品| 国产精品99久久久精品无码 | 欧美伊香蕉久久综合类网站| 久久99精品久久久久子伦| 国内精品伊人久久久久777| 无码任你躁久久久久久久| 久久国产成人午夜aⅴ影院| 久久96国产精品久久久| 精品久久一区二区三区| 久久精品国产亚洲AV高清热| 中文无码久久精品| 97精品伊人久久大香线蕉| 三级三级久久三级久久| 国产69精品久久久久9999APGF| 奇米影视7777久久精品人人爽| 伊人久久综合成人网| 999久久久无码国产精品| 91精品国产91久久久久久青草|