Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Partikel in bestimmtem Winkel erzeugen (https://www.delphipraxis.net/82351-partikel-bestimmtem-winkel-erzeugen.html)

igel457 11. Dez 2006 19:11


Partikel in bestimmtem Winkel erzeugen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich stehe vor einem Problem:

In meiner Partikelengine möchte ich Partikel nur in eine bestimmte Richtung abstrahlen. Momentan erzeuge ich die Partikel folgendermaßen:

Delphi-Quellcode:
var l:double;
begin
  with FDir do
  begin
    X := 180-random(360);
    Y := 180-random(360);
    l := Sqrt(Sqr(X)+Sqr(Y));
    X := X / l;
    Y := Y / l;
  end;
end;
Ich erzeuge einen Vektor und normalisiere diesen, um die Partikel praktisch "kreisförmig" abzustrahlen. Aufgrund der Normalisierung bringt es auch nicht viel an den so viel versprechenden Werten 180 oder 360 rum zu spielen.

Wie meine Winkelangabe aufgebaut ist, habe ich nochmal an einem kleinen Beispiel im Anhang verdeutlicht.

Hat jemand eine Idee, wie ich dies realisieren könnte? (Ich bin leider erst in Klasse 10. und kenne mich mit Vektorrechnung nicht so 100% aus.)

Schonmal Danke,
Igel457

BenjaminH 11. Dez 2006 19:25

Re: Partikel in bestimmtem Winkel erzeugen
 
tan(alpha) gibt dir die Steigung eines solchen Strahles an, das ist genauer als wenn du das mit Pythagoras zu lösen versuchst.

igel457 11. Dez 2006 19:34

Re: Partikel in bestimmtem Winkel erzeugen
 
Ähm...
Kannst du das nochmal genauer erkären? Ich verwende den Pythagoras duch nur, um meinen Vektor zu normalisieren. Das soll auch mit Tangens gehen? :gruebel:

Khabarakh 11. Dez 2006 19:38

Re: Partikel in bestimmtem Winkel erzeugen
 
Hm, machs doch einfach so:
Delphi-Quellcode:
Alpha := Random * 2 * Pi;
X := cos(Alpha);
Y := sin(Alpha);
Bereits normalisiert und natürlich über Alpha extrem leicht anpassbar.

igel457 11. Dez 2006 20:27

Re: Partikel in bestimmtem Winkel erzeugen
 
Zitat:

Zitat von Khabarakh
Hm, machs doch einfach so:
Delphi-Quellcode:
Alpha := Random * 2 * Pi;
X := cos(Alpha);
Y := sin(Alpha);
Bereits normalisiert und natürlich über Alpha extrem leicht anpassbar.

Ok, jetzt hab ichs hinbekommen.

Delphi-Quellcode:
var alpha,max,min,h : double;
begin
  with FDir do
  begin
    max := (CreationAngle+CreationAngleOpen / 2) * PI / 180;
    min := (CreationAngle-CreationAngleOpen / 2) * PI / 180;
    Alpha := Random * (max-min)+min;
    X := cos(Alpha);
    Y := sin(Alpha);
  end;
end;
Danke an alle
igel457

Khabarakh 11. Dez 2006 20:39

Re: Partikel in bestimmtem Winkel erzeugen
 
Oder für die Schreibfaulen ;) :
Delphi-Quellcode:
Alpha := Offset + Open * (Random - 0.5);


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz