Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 02, 2025 04:29

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Zufälligen Punkt in 3D Quadrat
BeitragVerfasst: Di Okt 23, 2007 16:06 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
hi,

Es geht um eine kleine Partikel Engine, die ich schreibe, ich habe das ganze schonmal in 2D gemacht, in 3D wird das ganze jetzt nochmal ein wenig komplizierter ;)
Mein Partikel Emitter ist ein Quadrat welches eine Position und eine Ausrichtung (zwei winkel) hat. Jetzt möchte ich zunächst einen zufälligen punkt in diesem Quadrat bestimmen.
Des weiteren gibt es einen Winkel der angibt, in welche Richtungen Partikel austreten. (Man könnte es als Streuung ansehen) 0° bedeutet alle Partikel fliegen parallel und 360° bedeutet eine Kreisförmige Emission, wobei alle Zwischenstadien (die ja so etwas wie die form eines kegels haben) senkrecht zur Oberfläche des Quadrates stehen sollen.
prinzipiell erzeuge ich die zufallspunkte im nicht gedrehten quadrat und drehe dann diese punkte, nur stehe ich gerade da etwas auf dem schlauch ;)

Wie setze ich das am besten um ?

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 23, 2007 20:07 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Ein Quadrat kannst du wie aehnlich wie bei einer Ebene mit einem Aufpunkt und 2 Richtungs bzw in dem Fall Kanten Vektoren definieren.

Jetzt rechnest du einfach:
Code:
  1. ergebnisPunkt = aufpunkt + richtungsvektor1*randomValue1 + richtungsvektor2*randomValue2


Wobei randomValue1 und randomValue2 einen (unterschiedlichen) Zufallswert zwischen 0 und 1 haben.


Statt mit einer Winkelangabe wuerde ich einen Punkt hinter dem Quadrat platzieren. Nun berechnest du einfach den Vektor von diesem Punkt zu dem ermittelten Punkt im Viereck und teilst ihn durch seine Laenge um ihn die Laenge 1 zu geben.

Ist der Punkt sehr nahe an der Ebene, wirkt es so als ob sich die Partikel Kugelfoermig entfernen. Ist der Punkt sehr weit weg, wirkt es so als ob die Partikel senkrecht vom Viereck wegbewegen.


Dateianhänge:
Dateikommentar: Man kann zum Beispiel einen Punkt hinter dem Viereck zu Berechnung des Austrittwinkels berechnen.
PartikelAusViereck.png
PartikelAusViereck.png [ 7.98 KiB | 5493-mal betrachtet ]
Dateikommentar: Punkte in einem Viereck, koennen mit hilfe von Vektoren erreicht werden.
PunkteImViereck.png
PunkteImViereck.png [ 19.05 KiB | 5496-mal betrachtet ]

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 23, 2007 22:06 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
das mit dem Quadrat (Rechteck) als Vektoren ist eine gute idee, so werde ich das machen.
das mit der Richtung macht auch Sinn (sofern ich das richtig verstanden habe).

Angenommen dies sei das Quadrat:
Code:
  1.  
  2. |------------------|
  3. |                      |
  4. |   X                 |
  5. |------------------|
  6.  


wenn X der zufallspunkt ist und sich der andere punkt in der mitte befindet gibt es ja zwei möglichkeiten. entweder habe ich den Punkt hinter der Fläche und den vektor zum X hin, dann würde sich das partikel nach links bewegen. habe ich den punkt vor der fläche und vom X zum punkt würde sich das partikel nach rechts bewegen, richtig ? keine schlechte idee, ist es denn so, wenn der punkt auf der fläche liegt, dass die Partikel einen Kreis beschreiben ? (ich bräuchte aber eine kugelförmige Emission, also müsste ich als Emitter einen Würfel nehmen, dann hätte ich alle Möglichkeiten) ist das nicht etwas ungenau ? den punkt kann ich ja durch den abstand zum rechteck definieren (also über die flächennormale)
Mit einem Würfel als Basis wäre das allerdings wieder schwieriger.

mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 24, 2007 11:34 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Ich glaube ich mache das so:

Ein Würfel [bzw Quader] (Axis aligned) und einen Punkt (wie du bereits sagtest). Der Würfel wird dann durch zwei Vektoren beschrieben. Das Zufallsgenerieren ist dann ja kein Problem. Die Größe des Würfels kann ich somit auch so verändern, dass ich ein Rechteck oder einen Punkt habe. wenn der Zielpunkt in der Mitte ist, habe ich eine Kreisförmige Emission (bei einem Würfel) Um parallele Partikel zu erreichen, muss ich mir noch etwas überlegen.

Meines erachtens so:

Code:
  1.  
  2.     with position do
  3.     begin
  4.       x := FPosition.x + FSize.x * (random(201) / 100 - 1);
  5.       y := FPosition.y + FSize.y * (random(201) / 100 - 1);
  6.       z := FPosition.z + FSize.z * (random(201) / 100 - 1);
  7.     end;
  8.     direction := v3f_normalize(v3f_sub(FAPoint, position));
  9.  


€: schein super zu funktionieren

mfg und danke ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]