Flächen berechnen

looser88

Mitglied
Hallo,
ich habe folgendes Problem ....
ich möchte Flächen berechnen mit dieser Formel

Java:
package berechnung;

public class poly {
 
  Punkt[]p;
public String name;
  
 
  public poly(Punkt[]p){
      
      this.p=p;
  }
  

  public double flaeche(){
      
    

      double flaeche =0;
	
      for(int i=0; i<p.length-1; i++){
          flaeche  += (p[i].y+p[i+1].y)*(p[i].x-p[i+1].x);
                  }
      // der Anfangswert der Fläche
      flaeche += (p[p.length-1].y+p[0].y)*(p[p.length-1].x-p[0].x);
      //Aufgrund doppelte Flaechenberechnung wird um genaue Flaeche zuerhalten halbiert
      flaeche=flaeche/2;
     
  
  
   return flaeche;
  }
      
}

Jedoch nimmt das Programm nicht diese Punkte in die Formel ....

Java:
package anwendung;
 
import berechnung.*;
 
 
public class Anwendung {
    public static void main(String[]args){

    Punkt []test1=new Punkt[]{
                new Punkt(1,1),
                new Punkt(5,5),
                new Punkt(2,0),
               new Punkt(10,10)};
    poly polygon1=new poly(test1);
    
    System.out.println("Fläche 1  "+polygon1.flaeche()+" m^2");
    
    Punkt []test2=new Punkt[]{
                new Punkt(10,10),
                new Punkt(15,5),
                new Punkt(13,0),
                new Punkt(12,10)};
         
    poly p2= new poly( test2);
    
    System.out.println("                  ");
        
        System.out.println("Fläche 2  "+p2.flaeche()+" m^2");   
    
        
        Punkt []test3=new Punkt[]{
                new Punkt(12,10),
                new Punkt(12,0),
                new Punkt(20,10)};
 
    poly p3=new poly(test3);
        
        
        System.out.println("Fläche 3 "+p3.flaeche()+" m^2");
        
    }     
}

Java:
package berechnung;

public class Punkt {

	
	private double x1;
	private double x2;
	public int x;
	public int y;
	public String name;




public Punkt() {

}
public Punkt(double x1, double x2) {
	this.x1 = x;
	this.x2 = y;
	}
	public Punkt(Punkt p) {
	this.x1 = p.x1;
	this.x2 = p.x2;
	}
}

Was muss ich machen ...damit die Formel die Punkte in die Berechnung nimmt ????
 
Zuletzt bearbeitet von einem Moderator:
Deine Punkt-Klasse ist völlig daneben. Willst du int oder double? Angenommen double, dann:

Java:
public class Punkt {
    public double x1;
    public double x2;

    public Punkt(double x1, double x2) {
      this.x1 = x1;
      this.x2 = x2;
    }

    public Punkt(Punkt p) {
      this.x1 = p.x1;
      this.x2 = p.x2;
    }
}

Falls die Punkte unveränderlich sein sollen, dann [c]public final double[/c] x1 u.s.w.
 
Ja das ist Quatsch gewesen ....
nun ist das Problem.....wie bringe ich die Punkte in die Formel bzw. wie befehle ich dem Programm die Punkte in die Formel zu geben ...???:L
Diese Summenformel ruft die Punkte nacheinander auf und berechnet diese ....aber iwie nimmt diese Formel die Punkte nicht auf??????
Wie schreibe ich ...das er den p[1].y (Punkt 1 y-Wert) oder p[2].x (Punkt 2 x-Wert) sich nimmt und einsetzt für die jeweilige Fläche ???
 
Also was meinst du die Formel nimmt die Punkte nicht auf?

Formuliere bitte deine Fragen verständlich mit vielleicht einem Beispiel zum Verständnis.

Und wie du schon geschrieben hast:
der 1. Punkt in einem Array beginnt mit p[0].x oder p[0].y
 
Bei der Methode flaeche() ist ziemlich unklar, was berechnet wird. Auf Anhieb tippe ich mal auf ein Rechteck. Sofern die Methode nicht generisch verschiedene geom. Objekte berechnen kann, benenne die Methode z.B. flaecheRechteck. Zudem ist die Klasse poly fehlerhaft. Was soll mit Punkt[]p; geschehen? p wird nie initialisiert.
 
Es handelt sich hierbei um die gauß''Trapezfomel ....
bei der Berechnung flaeche() nimmt er den Anfangswert =0 und teilt diesen /2 wie es unter der Formel gefordert ist ....jedoch wird die Formel nicht gerechnet ....???
Ich weiß nicht wieso ....ich denke es liegt an den Punkten ...die Formel weiß nicht welche Punkte sie nehmen soll ?!?!?
 
Grundsätzlich könnte man die Punkte der Formel Methode direkt übergeben - es wäre sogar sinnvoll die Methode statisch zu machen - dann könnte man sich den Konstruktor und die Übergabe darin sparen (Klassennamen beginnen im Übrigen mit einem Großbuchstaben)
....jedoch wird die Formel nicht gerechnet ....???
...die Formel weiß nicht welche Punkte sie nehmen soll ?!?!?
Mit solchen Aussagen kann man nicht viel anfangen und schon gar nicht helfen, wie schaut der aktuelle Code aus? Hast Du die Punkt Klasse von Landei übernommen? Gibt es Fehler? Wird kein Ergebnis geliefert? Wird ein falsches Ergebnis geliefert....
 
Ich muss jedoch einen Konsrtruktor mit Übergabe machen ....
Wenn ich Landeis Code einfüge , dann zeigt er mir
x,y cannot be resolved or is not a field bei der Formel .....
 
Ich glaube du musst noch sehr an den Grundlagen arbeiten.

Aber um das kurz zu fassen:

Java:
public class Anwendung {
	public static void main(String[] args) {

		Punkt[] test1 = new Punkt[] { new Punkt(1, 1), new Punkt(5, 5),
				new Punkt(2, 0), new Punkt(10, 10) };
		Poly p1 = new Poly(test1);

		System.out.println("Fläche 1 = " + p1.flaeche() + " m²");

		Punkt[] test2 = new Punkt[] { new Punkt(10, 10), new Punkt(15, 5),
				new Punkt(13, 0), new Punkt(12, 10) };

		Poly p2 = new Poly(test2);

		System.out.println("Fläche 2 = " + p2.flaeche() + " m²");

		Punkt[] test3 = new Punkt[] { new Punkt(12, 10), new Punkt(12, 0),
				new Punkt(20, 10) };

		Poly p3 = new Poly(test3);

		System.out.println("Fläche 3 = " + p3.flaeche() + " m²");

	}
}

Java:
public class Punkt {

	public double x;
	public double y;

	public Punkt() {

	}
	
	public Punkt(Punkt p) {
		this.x = p.x;
		this.y = p.y;
	}

	public Punkt(double x, double y) {
		this.x = x;
		this.y = y;
	}
}

Java:
public class Poly {

	Punkt[] p;

	public Poly(Punkt[] p) {

		this.p = p;
	}

	public double flaeche() {

		double flaeche = 0;

		for (int i = 0; i < p.length; i++) {
			flaeche += (p[i].y + p[((i + 1) % p.length)].y)	* (p[i].x - p[((i + 1) % p.length)].x);
		}

		return flaeche/2d;
	}

}
 

Neue Themen


Zurück
Oben