Algorhitmus benötigt

Status
Nicht offen für weitere Antworten.

Max

Mitglied
Hallo zusammen,

Habe folgendes Problem:
Man stelle sich eine Ebene vor in der mehrere Punkte verteilt sind. Ich möchte eine Linie so um die Punkte (beziehungsweise durch die äusseren Punkte) ziehen, dass diese Linie alle inneren Punkte umfasst.

Die Punkte sind übrigens in einem Array gespeichert.
Gibt's da schon was aus der API?
Oder hat jemand Vorschläge zum Algorhitmus?
Komme nicht richtig weiter und freue mich entsprechend über Euren Rat

Danke und Grüsse
Max
 
Ok, einen pasenden Algorhitmus habe ich im Netz gefunden.
Wen's interessiert:
http://n.ethz.ch/student/mackerma/info6/konvex.html

jetzt habe ich eine konkrete Frage

Code:
.......
//Wertetripel data
class data{x,y,z;};
.....
//array mit Wertetripeln
data[]values=new data[arraylaenge];
......

Wie kann ich das array so sortieren, dass das array ich mit dem kleinsten x-Wert (auch negativ) beginnt uns dem Grösssten aufhört?


Für Hilfe dazu wäre ich echt dankbar, ist für Euch doch ne Kleinigkeit schätze ich

Danke und Grüsse
Max
 
Cello hat gesagt.:
Moin,

ich nehme an, du möchtest die konvexe Hülle der Punkte bestimmen. Vielleicht hilft das:

http://ddi.cs.uni-potsdam.de/Lehre/UebersichtInfoSST/KonvexeHuelle.pdf

Gruß, Marcel
Moin Cello,
Ja ganz recht danke für den link, soweit war aber ich schon.
jetzt geht`s ganz banal darum erstmal mein unten zitiertes array zu sortieren
Code:
....... 
//Wertetripel data 
class data{x,y,z;}; 
..... 
//array mit Wertetripeln 
data[]values=new data[arraylaenge]; 
......
und zwar beginnend mit dem niedrigsten x-Wert data[index].x bis zum höchsten data[index].x.
Da gibt's doch bestimmt was Elementares, ich finds aber nicht so richtig.

Wer weiss was ich meine und kennt das Zauberwort in der API?

Thanks a lot
und Grüsse
Max
 
Beni hat gesagt.:
Hi Beni, (auch Spätschläfer wie? :### )
thanks, ja das sieht schon gut aus,

funktioniert das auch irgendwie mit einem array aus classes wie ich sie zuvor beschrieben habe?
So, dass ich nach einer komponente sortieren kann?
nochmal dass Beispiel:
Code:
....
//Wertetripel
class data
{
float x,y,z;
};
...
//array mit Wertetripeln
values=new data[arraylaenge];
Ist es nun möglich nach einer einzelnen Komponete, z.B. values[index].x zu sortieren?
Wenn ja wie?
Ein code-schnipsel als Beispel wäre echt cool

Thanks
Max
 
Die Klasse die man sortieren will:
Code:
public class Data{
  public int x, y, z;
}

Und der Comparator den man dazu schreiben kann:
Code:
public class DataComparator implements Comparator{
  public int compare( Object a, Object b ){
    Data dataA = (Data)a;
    Data dataB = (Data)b;

    if( dataA.x < dataB.x )
      return -1;
    else if( dataA.x == dataB.x )
      return 0;
    else
      return 1;
  }
}

Und dann so aufrufen:
Code:
Data[] array = ...
DataComparator dc = new DataComparator();

Arrays.sort( array, dc );

Oder das Interface Comparable implementieren (class Data implements Comparable).

mfg Beni
 
Beni hat gesagt.:
Die Klasse die man sortieren will:
Code:
public class Data{
  public int x, y, z;
}

Und der Comparator den man dazu schreiben kann:
Code:
public class DataComparator implements Comparator{
  public int compare( Object a, Object b ){
    Data dataA = (Data)a;
    Data dataB = (Data)b;

    if( dataA.x < dataB.x )
      return -1;
    else if( dataA.x == dataB.x )
      return 0;
    else
      return 1;
  }
}

Und dann so aufrufen:
Code:
Data[] array = ...
DataComparator dc = new DataComparator();

Arrays.sort( array, dc );

Oder das Interface Comparable implementieren (class Data implements Comparable).

mfg Beni
Hallo Beni,
Danke für die Hilfe, hat prima funktioniert.
Grüsse
Max
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben