WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Schnittvolumen zweier bzw mehrerer Kegel

 

Fussel
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2012, 15:47     Titel: Schnittvolumen zweier bzw mehrerer Kegel
  Antworten mit Zitat      
Hallo zusammen,


bin ganz neu hier im Forum und hoffe hier ein paar Tipps und dergleichen zu erhalten.

Ich sage gleich von Anfang an, dass die Problematik schwer in Worte zu fassen ist Wink

Momentan sitze ich an meiner Bachelorarbeit und meine Aufgabe ist dabei bei einer Kohlehalde (da ich mich an einem Kohlekraftwerk aufhalte) die Lage der verschiedenen Kohletypen zu bestimmen (der Sinn sei mal dahin gestellt, geht im groben darum zu wissen wo welche kohle liegt weil die alle unterschiedliche Brennwerte etc haben, da die aus unterschiedlichen Ländern importiert wird)

Um mir erstmal ein Modell zu schaffen, bin ich davon ausgegangen, dass die Kohle, welche über eine Art Schlauch einfach senkrecht nach unten auf die Halde fallen gelassen wird, sich wie ein Kegel aufbaut. Die Daten die ich weiß sind zum einen das Volumen, das fallen gelassen wird und zum anderen die x-,y- und z-Koordinaten des Schlauches der sich am Ende immer 1 Meter oberhalb der Kohle befindet. Also weiß ich im Prinzip die Koordinaten der Kegel-Spitze.
So das eigentliche Probelm ist jetzt dass der Schlauch verschoben wird und ein zweiter Kegel sich aufbaut (bzw. später mehrere), und diese Kegel überlagern sich.
Um erst einmal einfach zu starten gehe ich nur von zwei Kegeln aus. Von beiden Kegeln weiß ich die Höhe durch die Koordinaten und das Volumen, Problem ist jetzt jedoch, dass das Volumen vom zweiten Kegel keinen vollständigen Kegel mehr beschreibt weil dieser ja den ersten an einer gewissen stelle überlagert. Ich hab mir dafür auch schon ein Algorithmus ausgedacht wie ich mit Hilfe des Schnittvolumens beider Kegel nacher auf den exakten Radius des zweiten Kegels komme.

Aber wie berechne ich das Schnittvolumen???
Ich weiß dass ich mir mit Hilfe der cylinder-fkt mehrere Daten-Punkte erzeugen kann falls diese von Nöten sind, jedoch nicht direkt wie ich dadurch zwei Volumen aufbauen kann und dann daraus auch noch das Schnittvolumen ermitteln kann.
Habe es zwei wochen mit reiner purer Mathematik auf einem Blatt Papier versucht um mir eine Formel herzuleiten, aber das ist leicht überirdisch, manche können das vllt aber ich bin kein Einstein Wink

Prinzipiell hab ich auch eine Lösung mit Java von einem Kumpel erhalten, der das ganze mit Stochastik berechnet. Der Ansatz ist um diese Kegel einen Kasten zu bilden und in diesem Kasten eine gewisse Anzahl von zufälligen Punkten (beispielshaft 2 Millionen) zu erzeugen und zu schauen wieviele der Punkte sowohl in dem einen als auch in dem anderen Volumen vorhanden sind, um daraus dann das Schnittvolumen zu berechnen. Jedoch ist diese Methode recht ungenau bei sehr vielen Überlagerungen bzw sehr zeitaufwendig wenn ich die Anzahl der Punkte erhöhe um die Genauigkeit zu steigern, deshalb wäre es mir ganz lieb einen genaueren Ansatz zu finden.

Vielen Dank im vorraus und sry dass ich kein Mann der kurzen Texte bin Wink

MfG
Private Nachricht senden Benutzer-Profile anzeigen


colleq

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2012, 16:10     Titel:
  Antworten mit Zitat      
hallo fussel,

mal sehen ob ich deinen gedankengang richtig nachvollzogen habe:
Zur Vereinfachung mache ich das ganze mal in 2D (wir gucken also von oben auf den Kohlehaufen drauf!):

Wir gehen davon aus, dass die Kohleladung sich kreisförmig (2d!) ausbreitet. Wir wissen demnach die Fläche (Volumen kennen wir in 3d also auch die Fläche in 2d) und den Startpunkt der ersten Ladung (x-y Koordinaten des Schlauchs). Der Einfachheit halber legen wir x-y für die 1 (!) Ladung mit (0|0) fest. Wir können die Fläche des Kreises berechnen.
Nun gehen wir wieder der Einfachheit halber davon aus, dass sich der Schlauch nur in einer Ebene bewegt (nur x- Richtung z.b.). Wir kennen dann den Mittelpunkt der zweiten Kohleladung (des zweiten Kreises) diese ist vom ersten logischerweise (x+a|0) mit Annahme des Startpunktes (0|0) somit (a|0) entfernt. Wir können die Fläche des zweiten Kreises berechnen. Da sich die Kreise überlagern und dich die Differenz interessiert lässt sich doch durch gleichsetzen der Kreisgleichungen, bestimmen der Schnittpunkte und schließlich berechnung genau diese Differenz bestimmen.


In 3d ist es gewiss für einen Kegel etwas umständlicher aber dennoch ähnlich vom Prinzip. Hab ich dich soweit richtig verstanden?

lg
 
Fussel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2012, 09:37     Titel:
  Antworten mit Zitat      
Hallo colleq,

also im groben trifft es das schon. Gehen wir mal wirklich nur davon aus wir hätten im 2-d-Raum diese beiden Kreise und ich kann mit Hilfe des ausgerechneten Radius mir jeweils auch die Funktion der Kreise (wobei darauf zu achten ist das ein Kreis so gesehen ja dann von 2 Funktionen beschrieben wird, im einfachsten fall beim einheitskreis: y=+-wurzel (1-x^2) ) ermitteln, müsste ich auch aufwendiger weise, da jeder Kreis aus 2 Funktionen besteht erstmal 4 gleichungen aufstellen.
ok in dem Fall dass wir nur in X-richtung verschieben kann man das ganze dann verringern. Aber selbst wenn ich die Schnittpunkte habe, weiß ich immer noch nicht recht, wie ich daraus dann die Schnittfläche ermitteln kann.

Wie gesagt ich habe 2 wochen versucht das ganze mathematisch irgendwie herzuleiten, und mir ist dabei aufgefallen, dass wenn man das ganze mathematisch fassen will, viele Fälle berücksichtigen muss. Zum einen steht die frage im Raum: Wie ist der Winkel der Schrägen der beiden Kegel, ist der gleich kann man schon vieles verallgemeinern, jedoch wird der denke ich nicht immer gleich sein, das ist kohle-typ abhängig. aber selbst wenn er gleich ist, treten sehr viele verschiedene varianten auf wie sich diese schnittfläche aufbaut. Ich kann schließlich nicht davon ausgehen, dass jeder Kegel gleich hoch gesetzt wird und immer im gleichen Abstand verschoben wird.
Meine Frage ist daher: Gibt es vllt zufällig eine Funktion die diese Schnittfläche berechnen kann?? Oder hat jemand die ultimative Formel die all diese Fälle mit einschließt?? Wink

Hät ich nämlich die Formel für die Fläche könnte ich diese mit Hilfe von Integralen zum Volumen umrechnen, aber da häng ich momentan einfach.

Ich kann mir durchaus auch vorstellen, dass das irgendwie geht, allerdings habe ich die befürchtung dass es allein für diese zwei Kegel schon seeehr seeehr aufwendig wird. Was passier erst wenn sich mehrere kreuz und quer überlagern? Razz

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
colleq

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2012, 13:03     Titel:
  Antworten mit Zitat      
Fussel hat Folgendes geschrieben:
Hallo colleq,

also im groben trifft es das schon. Gehen wir mal wirklich nur davon aus wir hätten im 2-d-Raum diese beiden Kreise und ich kann mit Hilfe des ausgerechneten Radius mir jeweils auch die Funktion der Kreise (wobei darauf zu achten ist das ein Kreis so gesehen ja dann von 2 Funktionen beschrieben wird, im einfachsten fall beim einheitskreis: y=+-wurzel (1-x^2) ) ermitteln, müsste ich auch aufwendiger weise, da jeder Kreis aus 2 Funktionen besteht erstmal 4 gleichungen aufstellen.
ok in dem Fall dass wir nur in X-richtung verschieben kann man das ganze dann verringern. Aber selbst wenn ich die Schnittpunkte habe, weiß ich immer noch nicht recht, wie ich daraus dann die Schnittfläche ermitteln kann.
Hät ich nämlich die Formel für die Fläche könnte ich diese mit Hilfe von Integralen zum Volumen umrechnen, aber da häng ich momentan einfach.




Das ist auch nicht so ganz trivial. Die lösung an die ich da zuerst denke funktioniert über ein doppelintegral mit den Kreisfunktionen als Integrationsgrenzen im ersten integral und anschließend den Schnittpunkten der beiden Kreise als grenzen im zweiten integral. => Mehrfachintegral als Stichwort in einschlägiger literatur!

Fussel hat Folgendes geschrieben:

Wie gesagt ich habe 2 wochen versucht das ganze mathematisch irgendwie herzuleiten, und mir ist dabei aufgefallen, dass wenn man das ganze mathematisch fassen will, viele Fälle berücksichtigen muss. Zum einen steht die frage im Raum: Wie ist der Winkel der Schrägen der beiden Kegel, ist der gleich kann man schon vieles verallgemeinern, jedoch wird der denke ich nicht immer gleich sein, das ist kohle-typ abhängig. aber selbst wenn er gleich ist, treten sehr viele verschiedene varianten auf wie sich diese schnittfläche aufbaut. Ich kann schließlich nicht davon ausgehen, dass jeder Kegel gleich hoch gesetzt wird und immer im gleichen Abstand verschoben wird.
Meine Frage ist daher: Gibt es vllt zufällig eine Funktion die diese Schnittfläche berechnen kann?? Oder hat jemand die ultimative Formel die all diese Fälle mit einschließt?? Wink

Das du das schon vorgefertigt irgendwo zur freien Verfügung findest wage ich nun einfach mal zu bezweifeln. Die Komplexität dieses Problems ist durchaus nicht zu leugnen. Wenn man davon ausgeht, dass sich die Kohlehaufen nicht homogen vermischen, wovon im Normalfall auszugehen ist, dann macht das natürlich die ganze Sache noch etwas komplizierter. Mit "einfachen" Geometrieberechnungen ist es hier wohl nicht getan

Fussel hat Folgendes geschrieben:

Ich kann mir durchaus auch vorstellen, dass das irgendwie geht, allerdings habe ich die befürchtung dass es allein für diese zwei Kegel schon seeehr seeehr aufwendig wird. Was passier erst wenn sich mehrere kreuz und quer überlagern? Razz

LG

Einfacher wird es sicherlich nicht...

Nochmal zum ursprünglichen Problem: Ich verstehe, dass es verschiedene Kohletypen gibt, die jeweils unterschiedliche Eigenschaften haben und man beim abladen der Kohle daran interessiert ist wo letztlich die verschiedenen Kohletypen auf der halde liegen zwecks späterer Weiterverarbeitung. Ich verstehe aber nicht ganz warum du hinterher die lage bestimmen musst wenn man doch beim abladen die möglichkeit hat diese eindeutig festzulegen? Oder soll es darum gehen diesen Schlauch der die Kohle ablässt in Abhängigkeit des Volumens "korrekt" (sprich nicht zu dicht an den/die anderen haufen) zu positionieren?
 
Fussel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2012, 11:43     Titel:
  Antworten mit Zitat      
Ok ich werd mal schaun was sich da machen lässt Wink danke auf jedenfall schonmal.

Zu der Lage der Kohle: Also man hat natürlich die Möglichkeit festzulegen wo der Mittelpunkt der Kegel ist. Allerdings weiß man dann ja nicht die exakten Ausmaße. Es kann ja auch passieren das zwei unterschiedliche Kohle-Typen übereinander gelagert werden, da weiß ich dann ja nicht den exakten Standort. Und im nachhinein wenn ich das ganze wieder "abkratze" möchte ich bei dem abgekratzten Volumen gerne wissen um welche Kohle es sich da nun handelt, bzw aus welchen Kohlesorten sich dieses Volumen nun zusammensetzt.

Mein Chef hatte jetzt noch die Idee wenn ich jetzt die wirklichen Radien habe von den einzelnen Kegeln sowie deren Volumen udn Höhe, dass ich das ganze grafisch darstelle, so dass ich quasi die Oberfläche der Halde darstelle. Er fänds auch super wenn man quasi bei der Grafik jetzt draufklickt und dann einem gesagt wird zu welcher Kohle das jetzt gehört. Das ist jetzt eigentl nicht mehr passend zu der Überschrift des Themas und passt eigentl auch nciht mehr in diese Richtung, aber mal angenommen ich benutze nun das Java-Programm von meinem Kumpel (Software ist BlueJ) und ich ermittel mir daraus die entsprechenden Radien etc und speicher die jetzt inner txt.datei oder excel-datei ab dann kann man die Daten ja auch bei Matlab auslesen und den ganzen Kram grafisch darstellen. Am besten hat mir da die Darstellung mit Surface gefallen. Das erste Problem was ich dabei aber habe: Wie lese ich einzelne Spalten einer Exceltabelle aus (ich weiß dass man das manuell so machen kann, aber wenn ich nen Programm schreibe, dass ich dort mit einem Befehl gleich ne zuweisung machen kann) ? Das zweite Problem wäre wie kann ich die einzelnen Kegel in unterschiedlicher Farbe ausgeben lassen? Mit Hilfe von Plot 3 und dann den Farb-zuweisungen geht das ja, aber geht das auch mit Surface??? Da macht der das ja immer so, dass die Spitzenwerte rot sind und die kleinsten Werte blau, hätte aber gerne einheitliche Farben für jeden Kegel.

Ich guck erstmal im Forum hier ob die Frage nicht schon wer gestellt hat, aber man kann hier ja denke ich auch noch ne antwort hinschreiben Wink

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.