POJ 1265 Pick定理

Pick 定理,1899年
設 Γ 為平面上以格子點為頂點之單純多邊形,則其面積為 

\begin{displaymath}A=\frac{b}{2}+i-1\eqno{(8)}\end{displaymath}

其中 b 為邊界上的格子點數,i 為內部的格子點數。(8)式叫做 Pick 公式。


/*
 *POJ 1265
 *fuqiang
 *几何,Pick定理
 *2013/8/7
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
#define INF 0x3f3f3f3f
const int maxn = 100+3;
int Abs(int n)
{
    return n>0?n:-n;
}
struct Point
{
    int x;
    int y;
}p[maxn];

int gcd(int x, int y)
{
    return y==0?x:gcd(y,x%y);
}
int grid_onedge(int n)  //在线上的格点
{
    int ret = 0;
    for(int i = 0; i < n; i++)
    {
        ret += gcd(Abs(p[i].x-p[(i+1)%n].x), Abs(p[i].y-p[(i+1)%n].y));
    }
    return ret;
}
int grid_inside(int n)  
{
    int ret = 0;
    for(int i = 0; i < n; i++)
    {
        ret += p[(i+1)%n].y * (p[i].x - p[(i+2)%n].x);
    }
    return Abs(ret);
}
int main()
{
#ifndef ONLINE_JUDGE
    freopen("in","r",stdin);
#endif
    int T,Case = 1;
    int n,a,b;
    cin>>T;
    while(T--)
    {
        cin>>n;
        p[0].x = 0;
        p[0].y = 0;
        for(int i = 1; i <= n; i++)
        {
            cin>>a>>b;
            p[i%n].x = p[i-1].x + a;
            p[i%n].y = p[i-1].y + b;
        }
        int E = grid_onedge(n);
        int I = (grid_inside(n)-E)/2+1;  //内部格点数
        double A = E/2.0 + I -1;
        printf("Scenario #%d:\n%d %d %.1f\n\n",Case++,I,E,A);
    }
    return 0;
}


談求面積的 Pick 公式 (第 6 頁)

 1
其他的求面積公式

平面上的多邊形,有各式各樣的面積公式,端視所給的數據而定。除了本文所介紹的 Pick 公式之外,還有 Heron 公式與測量師公式,構成三足鼎立的求面積三個重要公式。

  
 2
Heron 公式及其推廣

對於三角形的情形,如果已知三邊的長為 a,b,c,令 $s=\frac{1}{2}(a+b+c)$,則其面積為 

\begin{displaymath}\sqrt{s(s-a)(s-b)(s-c)} \eqno{(14)}\end{displaymath}

推廣到四邊形,有兩種情形(詳見參考資料11.蔡聰明,〈四邊形的面積〉,《數學傳播》第十七卷第三期 民國八十二年)

(i)當四邊形的邊長為  a, b, c, d 且內接於一圓時,令  $s=\frac{1}{2}(a+b+c+d)$,則其面積為 

\begin{displaymath}\sqrt{(s-a)(s-b)(s-c)(s-d)}\eqno{(15)}\end{displaymath}

這叫做Brahmagupta公式。

(ii)對於任意四邊形,其面積為 

\begin{displaymath}\sqrt{(s-a)(s-b)(s-c)(s-d)}-abcd\cos^2(\frac{B+D}{2}) \eqno{(16)}\end{displaymath}

其中  B 與  D 為四邊形一對的對角。這叫做 Bretschneider 公式。值得注意的是,要再推廣到五邊形以上,就行不通了。

  
 3
測量師公式 (A Surveyor's Formula)

一個  n 邊形  A1A2,…, An,其頂點按逆時針方向來配置並且坐標為  Ak=(xk,yk)k=1,2,…, n,則面積為 

\begin{displaymath}\frac{1}{2}\sum_{k=1}^n\left\vert\matrix{x_k & x_{k+1} \cry_k & y_{k+1} \cr}\right\vert\eqno{(17)}\end{displaymath}

其中規定  xn+1=x1,且  yn+1=y1

在上述三類公式中,要以測量師公式最具推廣潛力,因為它可以「連續化」。例如:

平面上逆時針方向的封閉曲線 x=x(t)y=y(t)$t\in[\alpha,\beta]$,所圍成領域的面積為: 

\begin{displaymath}\begin{eqalign}\frac{1}{2}\oint\left\vert\matrix{x & x+d......alpha}^{\beta}[x(t)y'(t)-y'(t)x(t)]dt\end{eqalign}\eqno{(18)}\end{displaymath}

若再推廣,就得到著名的 Green 定理,而溶匯入微積分的數學主流。這好像是一條大河,一路上匯集各支流,最後終於流入大海 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值