Maison >Java >javaDidacticiel >Utiliser un algorithme plus efficace pour calculer l'aire d'un polygone en Java

Utiliser un algorithme plus efficace pour calculer l'aire d'un polygone en Java

PHPz
PHPzavant
2023-08-27 21:57:061503parcourir

Utiliser un algorithme plus efficace pour calculer laire dun polygone en Java

Le mot « polygone » vient du grec « Poly » signifiant « plusieurs » et « gon » signifiant « angle ». Un polygone est une forme plane fermée bidimensionnelle reliée par trois lignes droites ou plus. Par exemple triangle, quadrilatère, hexagone, etc.

Bien qu'il existe de nombreuses façons de trouver l'aire d'un polygone dans cet article, nous utiliserons l'algorithme slicker à cette fin.

Un algorithme plus flexible pour trouver l'aire d'un polygone

Algorithme Slicker

Il y a deux faits que vous devez savoir. Premièrement, selon la convention mathématique, les points pointant vers le haut dans la direction y sont toujours positifs. Deuxièmement, selon le système informatique, la direction y pointe vers le bas et est toujours positive. Cet algorithme fournit une solution efficace en répertoriant les sommets dans le sens antihoraire en utilisant des coordonnées y-down positives. Cela contrecarrera ces deux faits, ce qui entraînera une zone positive.

Parlons maintenant d'un programme Java qui implémente l'algorithme Slicker.

Algorithme

  • Étape 1 - Créez une classe "Slicker" et ses deux classes internes "Coordonnées" et "Poly".

  • Étape 2 - Déclarez et initialisez la constante "MAXIMUM" pour limiter le nombre de côtés du polygone.

  • Étape 3 - Créez un tableau d'objets de classe "Coordonnées" à l'intérieur de la classe interne "Poly". Ensuite, créez un constructeur de la classe "Poly" pour stocker les coordonnées dans ce tableau d'objets.

  • Étape 4 - Définissez davantage la méthode "calcAr" et le paramètre "cr". Dans cette méthode, nous allons créer une boucle for qui s'étendra sur le nombre de côtés du polygone et calculera l'aire.

  • Étape 5 - Maintenant dans la méthode main, créez un objet "cr" de classe "Poly". Nous obtiendrons alors le nombre de côtés et les coordonnées du polygone auprès de l'utilisateur.

  • Étape 6 - Enfin, nous appellerons la méthode "calcAr" et vérifierons si la zone est positive ou négative à l'aide d'un bloc if-else. Si positif, l'instruction de bloc "if" est exécutée, sinon le bloc else est exécuté.

Exemple

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

Sortie

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

Conclusion

Aucune forme plane ne peut être considérée comme un polygone, comme un cercle, bien qu'il s'agisse d'une forme plane fermée sans aucun côté. Nous ne pouvons donc pas appeler cela un polygone. Dans cet article, nous avons créé un programme Java pour calculer l'aire d'un polygone à l'aide de l'algorithme Slicker.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer