JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
作者 Re:利用海龍公式算多邊形面積 [Re:evian]
kentyeh





發文: 643
積分: 6
於 2018-05-12 01:49 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
假設6個點分別是A,B,C,D,E,F
面積就是 △ABC+△ACD+△ADE+△AEF
最後就是就海龍公式求出這4個三角形面積相加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.awt.geom.Point2D;
import static java.awt.geom.Point2D.Double;
 
public class Heron {
 
    public static double lenth(Point2D from, Point2D to) {
        return Math.sqrt(Math.pow(to.getX() - from.getX(), 2) + Math.pow(to.getY() - from.getY(), 2));
    }
 
    public static double heron(Point2D a, Point2D b, Point2D c) {
        double ab = lenth(a, b);
        double ac = lenth(a, c);
        double bc = lenth(b, c);
        double s = (ab + ac + bc) / 2;
        return Math.sqrt(s * (s - ab) * (s - bc) * (s - ac));
    }
 
    public static double area(Point2D[] polygon) {
        if (polygon.length < 3) {
            throw new IllegalArgumentException("多邊形至少要3個點");
        } else {
            double area = 0;
            for (int i = 1; i < polygon.length-1; i++) {
                area += heron(polygon[0], polygon[i], polygon[i + 1]);
            }
            return area;
        }
    }
 
    public static void main(String[] args) {
        Point2D[] polygon = new Point2D[]{new Double(-1, 4), new Double(2, 3), 
            new Double(2, -2), new Double(0.5, -3), new Double(-4, -1.5), 
            new Double(-3, 2)};
        System.out.printf("Area is %.3f",area(polygon));
    }
}

面積是 30.625


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
660 利用海龍公式算多邊形面積 evian 885 2018-05-11 07:35
614 Re:利用海龍公式算多邊形面積 layolayo2002 195 2018-05-11 08:28
628 Re:利用海龍公式算多邊形面積 kentyeh 1345 2018-05-12 01:49
» JWorld@TW »  Java 新手區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8