算法模板——计算几何1(图形面积)

实现功能——输入N个点,求出按此顺序围成的图形的面积

原理:其实就是个向量的叉积运算(详见UASCO-nocow:计算几何),注意二维的叉积是个很逗的东西,叉积这玩意本身就来自于三维向量

(HansBug:临睡觉了,水一发呵呵哒,额。。。phile犇不在好寂寞TT)

 1 var
 2    i,j,k,l,m,n:longint;
 3    a:array[0..100000,1..2] of longint;
 4 function surface:extended;inline;
 5          var
 6             i,j:longint;
 7          begin
 8               j:=0;
 9               for i:=1 to n do
10                   j:=j+(a[i,1]*a[(i mod n)+1,2])-(a[(i mod n)+1,1]*a[i,2]);
11               exit(abs(j)/2);
12          end;
13 begin
14      readln(n);
15      for i:=1 to n do readln(a[i,1],a[i,2]);
16      writeln(surface:0:2);
17      readln;
18 end.
19               

 

posted @ 2015-01-20 23:50  HansBug  阅读(326)  评论(0编辑  收藏  举报