“多邊形”一詞源自希臘文“Poly”,意思是“許多”,“gon”意思是“角度”。多邊形是由三或三條以上直線連接而成的二維閉合平面形狀。例如三角形、四邊形、六邊形等。
儘管在本文中求多邊形面積的方法有很多種,但我們將使用 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中文網其他相關文章!