Fläche mit überlappenden Ausschnitten berechnen

oleanderkiro

Level-2
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht hat jemand einen Tip.
Ich brauche einen Algorithmus der eine Fläche von einer Tür berechnet die z. Teil überlappende Ausschnitte enthält.
Es können bis zu 28 Ausschnitte (Rechtecke, Kreise oder Rhomben) sein. Jede Tür ist anders, gegeben sind die Türaussenmasse, die Position der Auschnitte sowie die Maße (beim Rechteck Länge und Breite, beim Kreis der Radius und beim Rhombus die Höhe).

Wenn die Ausschnitte nicht überlappen würden, wäre es einfach. es existiert keine Zeichnung.

Gruss

Joachim
 
fuer einen speziellen Einzelfall kann man das sicherlich berechnen. eine allgemein gültige Formel fuer alle Varianten wird schwierig bis unmöglich.

Gruß
 
Ich bin eigentlich SPS-Programmierer. Das Z-Buffering arbeitet doch mit der Tiefeninformation, ich habe nur 2D-Daten. Ich suche einen Algorithmus, den ich z.b. in SCL umsetzen kann.
 
Da wirst du hier in diesem Forum wahrscheinlich wenig Erfolg haben. Das Problem ist sehr untypisch für Programmierer von Industriesteuerungen. Am besten du suchst in einem Mathematik- oder Informatikforum nach Hilfe.
 
...
ich habe nur 2D-Daten.
...

Zeig mal her wie diese aussehen und beschreibe mal für was man diese Anwendung braucht, ich kann mir da keinen Reim drauf machen.

Die Idee das in eine Art Rastergrafik umzurechnen und dann die gesamt fläche zu zählen ist ja schon mal gar nicht so verkehrt.

Wie genau muss das ganze denn sein?
 
Zuletzt bearbeitet:
Ich bin eigentlich SPS-Programmierer. Das Z-Buffering arbeitet doch mit der Tiefeninformation, ich habe nur 2D-Daten. Ich suche einen Algorithmus, den ich z.b. in SCL umsetzen kann.
Die Tiefeninformation bestimmt die Staffelung der Elemente und somit was sichtbar ist.
Ich denke mit den von Thomas genannten Vatti-Clipping-Algorithmen kommst du weiter.
Dafür findest du einige Bibliotheken im Netz, die du nach SCL umsetzen kannst.

Gruß
Dieter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt einen Datenbaustein der enthält u.a.:
Gesamtlänge, Gesamtbreite und 28 arrays mit folgendem Aufbau: Feld für Typ (0=kein Ausschnitt, 1=Rechteck,2=Kreis,3=Rhombus),Feld für x-Position, Feld für Y-Position,Länge(bei Kreis Durchmesser, bei Rhombus Höhe) des Ausschnitts, Breite. Wenn sich die Ausschnitte nicht überlappen würden wäre es ganz einfach.
 
Wie genau muß es denn sein?
Ein rel. einfacher Ansatz wäre evtl. ein Raster über die Tür zu legen, das dann als Array aus XY-Werten in der Steuerung liegt. Alles mit 1 vorbelegen.
Dann das 1. Element in einem extra Array berechnen (alle Array-Punkte innerhalb des Elementes werden 0) und über den gegebenen Koordinatenpunkt auf das Raster der Tür legen (Koordinatenverschiebung). Die sich überdeckenden Punkte dann aus dem "Tür"-Array löschen (die werden 0 ). Das ganze für alle anderen Elemente wiederholen.
Zum Schluß im Array die vorhandenen Einsen zählen. Je mehr Array-Elemente, um so genauer wird das Ganze. Aber auch das ist kein ganz so einfacher Spaß.
Ich denke aber mit ein paar selbstgeschriebenen Funktionen kann man das Ganze recht übersichtlich gestalten.
Man kann dann den Algorithmus auch etwas genauer machen, indem man z. Bsp. bei "teilbelegten" Punkten eine bestimmte Prozentzahl zu eins und den Rest zu 0 macht.
 
Zuletzt bearbeitet:
Zurück
Oben