首頁  >  文章  >  Java  >  在Java中使用更有效率的演算法來計算多邊形的面積

在Java中使用更有效率的演算法來計算多邊形的面積

PHPz
PHPz轉載
2023-08-27 21:57:061422瀏覽

在Java中使用更有效率的演算法來計算多邊形的面積

“多邊形”一詞源自希臘文“Poly”,意思是“許多”,“gon”意思是“角度”。多邊形是由三或三條以上直線連接而成的二維閉合平面形狀。例如三角形、四邊形、六邊形等。

儘管在本文中求多邊形面積的方法有很多種,但我們將使用 slicker 演算法來實現此目的。

找出多邊形面積的更靈活演算法

Slicker 演算法

有兩個事實你必須知道,首先,根據數學約定,y 方向向上的點總是正值。其次,根據電腦系統,y方向指向下方且始終為正。該演算法透過使用正 y 向下座標逆時針列出頂點,提供了有效的解決方案。它將抵消這兩個事實,從而產生積極的區域。

現在我們來討論一個實作slicker演算法的java程式。

演算法

  • 第 1 步 - 建立一個類別「Slicker」及其兩個內部類別「Coordinates」和「Poly」。

  • 第 2 步 - 宣告並初始化常數「MAXIMUM」以限制多邊形的邊數。

  • 第 3 步 - 在內部類別「Poly」內建立類別「座標」的物件陣列。然後,建立“Poly”類別的建構函式以將座標儲存在該物件陣列中。

  • 步驟 4 - 進一步定義方法「calcAr」以及參數「cr」。在這個方法中,我們將建立一個 for 循環,它將運行到多邊形的邊數並計算面積。

  • 第 5 步 - 現在在 main 方法中,建立一個「Poly」類別的物件「cr」。然後,我們將由使用者取得多邊形的邊數和座標。

  • 第 6 步 - 最後,我們將呼叫方法「calcAr」並使用 if-else 區塊檢查面積是正數還是負數。如果為正,則執行「if」區塊語句,否則執行 else 區塊。

範例

import java.util.*;
public class Slicker {
   // to signify maximum number of sides of polygon
   static final int MAXIMUM = 50; 
   static class Coordinates {
      double c1, c2; 
      // declaring coordinates
   }
   static class Poly {
      // Array object of class Coordinates
      Coordinates cr[] = new Coordinates[MAXIMUM];
      int sides;
      Poly() 
      // constructor
      {
         // to accept input of coordinates
         for (int i = 0; i < MAXIMUM; i++)
         cr[i] = new Coordinates();
      }
   }
   // method to calculate area
   static double caclAr(Poly cr) {
      double res = 0;
      for (int i = 0; i < cr.sides; i++) {
         int j = (i + 1) % cr.sides;
         res += (cr.cr[i].c1 * cr.cr[j].c2)
          - (cr.cr[j].c1 * cr.cr[i].c2);
      }
      return res / 2;
   }
   static public void main(String[] args)
   {
      Poly cr = new Poly(); 
      // object of class 'Poly'
      // Object of scanner class for User inputs
      Scanner in = new Scanner(System.in);
      System.out.print("Enter total number of sides: ");
      cr.sides = in.nextInt();
      // to take coordinates from user
      System.out.println("Enter c1 and c2 coordinates: ");
      for (int i = 0; i < cr.sides; i++) {
         cr.cr[i].c1 = in.nextDouble();
         cr.cr[i].c2 = in.nextDouble();
      }
      // calling user defined method
      double caclAr = caclAr(cr);
      if (caclAr > 0) {
         System.out.print("The area of given Polygon: " + caclAr);
      } else {
         System.out.print("The area of given Polygon: " + (caclAr * -1));
      }
   }
} 

輸出

Enter total number of sides: 4
Enter c1 and c2 coordinates: 
2 3
3 5
5 8
8 2
The area of given Polygon: 17.0

結論

任何平面形狀都不能被視為多邊形,例如圓形,儘管它是一個封閉的平面形狀,但沒有任何邊。所以我們不能稱它為多邊形。在本文中,我們創建了一個 java 程式來使用 slicker 演算法計算多邊形的面積。

以上是在Java中使用更有效率的演算法來計算多邊形的面積的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除