Heim  >  Artikel  >  Java  >  Verwenden eines effizienteren Algorithmus zur Berechnung der Fläche eines Polygons in Java

Verwenden eines effizienteren Algorithmus zur Berechnung der Fläche eines Polygons in Java

PHPz
PHPznach vorne
2023-08-27 21:57:061474Durchsuche

Verwenden eines effizienteren Algorithmus zur Berechnung der Fläche eines Polygons in Java

Das Wort „Polygon“ kommt vom griechischen „Poly“ für „viele“ und „gon“ für „Winkel“. Ein Polygon ist eine zweidimensionale geschlossene ebene Form, die durch drei oder mehr gerade Linien verbunden ist. Zum Beispiel Dreieck, Viereck, Sechseck usw.

Obwohl es in diesem Artikel viele Möglichkeiten gibt, die Fläche eines Polygons zu ermitteln, verwenden wir zu diesem Zweck den Slicker-Algorithmus.

Ein flexiblerer Algorithmus zum Ermitteln der Fläche eines Polygons

Slicker-Algorithmus

Es gibt zwei Tatsachen, die Sie wissen müssen: Erstens sind Punkte, die nach oben in y-Richtung zeigen, immer positiv. Zweitens zeigt die y-Richtung laut Computersystem nach unten und ist immer positiv. Dieser Algorithmus bietet eine effiziente Lösung, indem er die Scheitelpunkte gegen den Uhrzeigersinn unter Verwendung positiver y-unten-Koordinaten auflistet. Dadurch werden diese beiden Tatsachen aufgehoben und eine positive Zone geschaffen.

Lassen Sie uns nun ein Java-Programm besprechen, das den Slicker-Algorithmus implementiert.

Algorithmus

  • Schritt 1 - Erstellen Sie eine Klasse „Slicker“ und ihre beiden inneren Klassen „Coordinates“ und „Poly“.

  • Schritt 2 – Deklarieren und initialisieren Sie die Konstante „MAXIMUM“, um die Anzahl der Seiten des Polygons zu begrenzen.

  • Schritt 3 – Erstellen Sie ein Array von Objekten der Klasse „Coordinates“ innerhalb der inneren Klasse „Poly“. Erstellen Sie dann einen Konstruktor der Klasse „Poly“, um die Koordinaten in diesem Objektarray zu speichern.

  • Schritt 4 - Definieren Sie die Methode „calcAr“ und den Parameter „cr“ weiter. Bei dieser Methode erstellen wir eine for-Schleife, die die Anzahl der Seiten des Polygons ermittelt und die Fläche berechnet.

  • Schritt 5 - Erstellen Sie nun in der Hauptmethode ein Objekt „cr“ der Klasse „Poly“. Anschließend erhalten wir vom Benutzer die Anzahl der Seiten und die Koordinaten des Polygons.

  • Schritt 6 – Abschließend rufen wir die Methode „calcAr“ auf und prüfen mithilfe eines if-else-Blocks, ob der Bereich positiv oder negativ ist. Wenn positiv, wird die „if“-Blockanweisung ausgeführt, andernfalls wird der else-Block ausgeführt.

Beispiel

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));
      }
   }
} 

Ausgabe

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

Fazit

Keine ebene Form kann als Polygon betrachtet werden, beispielsweise ein Kreis, obwohl es sich um eine geschlossene ebene Form ohne Seiten handelt. Wir können es also nicht als Polygon bezeichnen. In diesem Artikel haben wir ein Java-Programm erstellt, um die Fläche eines Polygons mithilfe des Slicker-Algorithmus zu berechnen.

Das obige ist der detaillierte Inhalt vonVerwenden eines effizienteren Algorithmus zur Berechnung der Fläche eines Polygons in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen