Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » Algorithmus gesucht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.07.2004, 23:32 Uhr
BuraTino



Hallo Programmierfreunde!

Das Thema ist hier vielleicht ein wenig falsch aber leider gab es dafür keine Kategorie.

Ich suche nach einem Algorithmus der mir die aufeinanderfolgenden Punkte von zwei Polygonen zurück gibt.

Beispiel: 1 Quellpolygon - x andere Polygone.

Welche Punkte der anderen Polygone sind auch Element der anderen Polygone.
Bedingung: sie müssen in beiden Polygonen jeweils hintereinander folgen.

Die Laufrichtung des Polygons ist im Uhrzeigersinn.

Mein Problem: Wenn ich mit einem Punkt starte und bis zu diesem laufe (dann Schleifenende), so kann der nächste ja immer noch dazugehören!
Ich hoffe ihr habt das verstanden.

einfacheres Beispiel:
mehrere Listen mit Einträgen von Namen:

Nun gib mir alle die Namen aus die gleich sind und hintereinander liegen!
BSP:
1. Liste: Meier - Schulze - Lehmann -Fischer - Müller - Schuster
2. Liste: Meier - Schulze - Schumann - Fleischer - Müller -Schuster.

Die Ausgabe soll sein, Müller - Schuster - Meier - Schulze.

Ich hoffe Ihr habt das verstanden!

Danke für eure Hilfe

BuraTino
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.07.2004, 01:20 Uhr
typecast
aka loddab
(Operator)


Hat leider nichts mit ANSI C/C++ zu tun ->
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.07.2004, 01:23 Uhr
typecast
aka loddab
(Operator)


Also das zweite Beispiel habe ich verstanden, aber deine Aufgabe leider nicht. Da haengt es hieran:


Zitat:

Bedingung: sie müssen in beiden Polygonen jeweils hintereinander folgen.



Koenntest du vielleicht beschreiben, was du damit meinst?
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.07.2004, 06:39 Uhr
(un)wissender
Niveauwart


Naja, die Lösungen sind schon alle mit ANSI-C/C++ zu realisieren...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.07.2004, 11:07 Uhr
typecast
aka loddab
(Operator)


Ja schon, aber es geht ja nicht um die Implementierung, sondern um den Algorithmus....
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.07.2004, 11:22 Uhr
BuraTino



Was haltet Ihr von meiner Lösung:

Wichtig ist ja nur zu wissen ob der erste Eintrag in der Liste ein "Nachfolger" ist.
Beginnen wir also mit in der Originalliste mit Meier, dann muss er auch irgendwo in der Suchliste sein. Wenn ja, dann schaue ich ob der "Vorgänger von Meier" hier "Schuster auch der Vorgänger in der Vergleichliste ist. Dies mache ich solange bis díe "Vorgänger" nicht mehr über einstimmen.
Damit habe ich meinen Startpunkt gefunden und gehe nun wieder vorwärts in beiden Listen.

@typecast:

Mal die Mal zwei Polygone. Beide Polygone haben mindestens zwei übereinstimmende Punkte.
Mach lieber mal 3-4. Da die Punkte im Uhrzeigersinn abfolgen muss eines der beiden beider Suche nach gleichen Punkten gegen den Uhrzeigersinn durchlaufen werden.

BSP: Poly1: P1(1,1) - P2 (2,5) - P3 (4,4) -P4 (7,3) - P5(8,2) - P6(5,0) -P7(3,1) - "P1"
Poly 2:P1(8,2) - P2(7,3) - P3 (4,4) - P4 (3,7) - P5(5,9) - P6(7,6) - P7(10,4) - P8(9,3) - "P1"

So nun suche ích alle Punkte des Poly1 durch P1.3 wird der erste gefunden. Nun muss ich Schauen ob der Nachfolger von P1.3 (P1.4) auch im Poly2 enthalten ist. Da ich hier andersrum laufen muss, finde ich Punkt P2.2. -> also Ok. Solange bis der NAchfolger der Poly1 Punkte nicht mehr mit den Vorgängern des Poly2 übereinstimmt.

Für eure Mühe trotzdem Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.07.2004, 16:54 Uhr
kronos
Quotenfisch
(Operator)


hab' ich's falsch verstanden oder suchst du nach gemeinsamen kanten??
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.07.2004, 21:54 Uhr
BuraTino



Ja,aber das ist nur direkt korrekt, denn ich suche zwischen den ersten identischen und letzten identischen den Mittelpunkt, aber das habe ich bereits raus.

Habe zu erst alle identischen Punkte mit ihren Nachfolgern gespeichert und danach so geordnet das sie in der richtigen Reihenfolge stehen.

Habe jetzt aber ein anderes Problem - Vielleicht könnt ihr mir dabei helfen - siehe C/C++ Ansi Standard
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: