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

» JWorld@TW » Java 新手區  

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





發文: 10
積分: 0
於 2018-05-11 07:35 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
public class Test {

  public static void main(String[] args) {

// 以下二個陣列代表六邊形的六個頂點, (-1,4), (2,3), ....
double[] x = {-1, 2, 2, 0.5, -4, -3} ;
double[] y = {4, 3, -2, -3, -1.5, 2} ;


double area = polygonArea(x,y) ;
System.out.println("area of polygon = "+area) ;
  }
  
  
   public static double triangleArea(double x1, double y1, double x2, double y2, double x3, double y3) { //題目給的格式,不能修改
     double rlt=0;
     double a = distance(x1,y1,x2,y2);
     double b = distance(x2,y2,x3,y3);
     double c = distance(x3,y3,x1,y1);
     double p=(a+b+c)/2;
     double s=Math.sqrt(p*(a-p)*(b-p)*(c-p));
     return rlt;
   }
  
   public static double polygonArea(double[] x, double y[]) { //題目給的格式,不能修改
  
//這裡不知道該如何套用上面海龍公式的函數,然後算出多邊形的面積
知道要用for迴圈把四個三角形面積加起來但不知道要怎麼打

   }
  

}


reply to postreply to post
作者 Re:利用海龍公式算多邊形面積 [Re:evian]
layolayo2002





發文: 40
積分: 0
於 2018-05-11 08:28 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
給你個方向

如何找到要用哪些點來當三角形的三個點?
A:隨便找一個點(假設為A),再來找到離他最近的一個點(假設為B ),第三個點則為距離B最近的點(假設為C)但是AC長要比BC長還大--第一個三角形;第二個三角形則拿AC兩個角,第三個角D則是距離C最近的點但是CD長要比BD小....以此類推找出各個三角形

看看板上還有沒有其他神人
幾何早就忘光了....只能看圖說故事了


reply to postreply to post
作者 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
» JWorld@TW »  Java 新手區

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

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8