多角形の面積     Last modified: Jun 28, 2004

目的

多角形の面積を計算する

使用法

Area(xy)

引数

xy    座標データ行列(1列目がx座標,2列目がy座標)
      座標点は時計回りに順番に用意する

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/area.R", encoding="euc-jp")

# 多角形の面積を計算する
Area <- function(xy)                                 # 座標データ行列(1列目がx座標,2列目がy座標)
{                                                       # 時計回りの順番で用意する
        n <- nrow(xy)
        x <- xy[,1]
        # 0.5 * Σ ((x[2], x[3], ..., x[n], x[1]) - (x[n], x[1], x[2], ..., x[n-1])) * xy[,2]
        # sum(sapply(1:n, function(i) x[i%%n+1]-x[(i+n-2)%%n+1])*xy[,2])/2
        sum((c(x[-1], x[1])-c(x[n], x[-n]))*xy[,2])/2
}


使用例

# 下図の色を付けた部分の面積を求める
fig
> xy <- matrix(c(9, 4, 7, 5, 6, 4, 7, 2, 5, 1, 2, 3, 3, 4, 1, 5, 1, 7, 3, 7, 4, 6, 7, 8), byrow=TRUE, nc=2)
> Area(xy)
[1] 28.5

# 下図の色を付けた部分の面積(標準正規分布のΦ(1.96))の近似値を求める
fig
> x <- seq(0, 1.96, length=100)
> y <- c(0, dnorm(x), 0)
> x <- c(0, x, 1.96)
> Area(cbind(x, y))
[1] 0.4749984         # 上の指示で,length を大きくすると精度が上がる
> pnorm(1.96)-0.5  # 正確な値はこうすれば求まる
[1] 0.4750021


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh