geometrische Körper beschreiben !

zich1011

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Community,

gibt es eine Möglichkeit bzw. eine geeignete Bibliothek für Codesys mit der ich einfache geometrische Körper wie Rechtecke oder Quader beschreiben kann ?

Die Beschreibung würde dann wohl anhand der Eckpunkte geschehen also z.B. RECTANGULAR (10,100,5,50).

Hintergrund des Ganzen ist eine Kollisionserkennung die ich schreiben möchte. Dafür soll der Wertebereich zweier Quader auf Überlappung geprüft werden.

Vielen Dank schonmal für eure Hilfe.

Grüße
 
Zuletzt bearbeitet:
Also dass es da was fertiges gibt glaub ich nicht.

Bei Rechtecken ist die Kollisionserkennung aber gar nicht so schwer.
So wie deine Beschreibung das Rechteckes aussieht, sind deine Rechtecke immer parallen zur X/Y-Achse? Dann ist die Prüfung doch trivial.

Wenn die Rechtecke auch gedreht sein können, machst du eine Schnittpunktberechnung zwischen allen Kanten (alle möglichen Kombinationen).
Dazu generierst du aus den zwei Punkten einer Kante eine Geradengleichung (m*x +b) und suchst nach einer Lösung. Wenn es eine gibt, muss diese noch im Bereich der Rechtecke liegen.

Vielleicht gibts da noch eine kürzere Lösung. Aber diese fällt mir so aus dem Stegreif ein und ist auch nicht sonderlich aufwändig - das wirds erst bei komplizierteren gemoetrischen Körpern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Thomas,

ich beschreibe derzeit einen achsorientierten Quader K mittels 6 Punkten. X_min, X_max, Y_min, Y_max, Z_min und Z_max.
Es soll nun geprüft werden ob ein zweiter Quader P den Wertebereich des ersten schneidet. Folgenden ALgorithmus nutze ich bisher.

(Kx_min > Px_min) or (Px_min > Kx_max)
(Ky_min > Py_min) or (Py_min > Ky_max)
(Kz_min > Pz_min) or (Pz_min > Kz_max)

Sobald einer dieser Therme wahr ist überlappen sich die Objekte nicht.

Der zweite Quader kann nun aber wie du schon erwähnt hast eine Drehung erfahren. Kannst du deine Idee mit der Schnittpunktberechnung noch etwas deutlicher beschreiben ? Ich hab die Idee noch nicht so verinnerlicht. Reichen die 6 Punkte mit denen ich den Wertebereich meines Quaders beschreibe dafür aus ?

Danke schonmal
 
Also jetzt 3D? Das ist doch schon ein kleiner Unterschied

Von der Idee her würde ich aber sagen, dass sich zwei Quader schneiden wenn eine Kante des einen Quaders mit einer Seitenfläche des anderen Quaders einen Schnittpunkt aufweist (Schnittpunkt Linie mit einer Fläche, und das mit allen Kanten und Flächen).
Aber da würde ich mal google bemühen (intersection boxes oder cubes) denn da gibt es sicher schnelle Algorithmen, ist ja nicht gerade unüblich.
 
Ja 3D....

Ok danke ich werde mal schauen ob ich was finde. Dachte es gibt evtl. geeignete Bibliotheken...

Wer noch Ideen hat, immer her damit.

Grüße
 
Zurück
Oben