hi, ich bastel gerade an meiner particle engine weiter.
dort gibt es einen "abschusswinkel" und eine position, dass heißt,
dass alle partikel auf einem punkt starten und von dort "abgeschossen" werden.
jetzt möchte ich, dass der emitter eine breite bekommt, also wird aus dem
punkt eine strecke.
das rote ist meine strecke, das blaue ist die normale.
gegeben sind P (der mittelpunkt der roten strecke), alpha (der winkel) und w (die breite).
gesucht werden s (linke intervallgrenze), t (rechte intervallgrenze), m (steigung), n (y-achsenabschnitt).
ich hab das ganze jetzt folgendermaßen gemacht, jedoch funzt das net so recht, wenn ich die breite auf 5000 setze, kann ich wieder was sehen, jedoch ist das komischerweise etwas diagonales, also so recht klappt das alles noch net, wo liegt der fehler ?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var a, beta, m, n, s, t: single;
if width <= 0 then FParticle.position := position else begin a := 2 * ((cos(angle) * width / 2) - position.X); beta := arccos(a / width); m := tan(beta); n := position.y - m * position.x; s := position.x - a / 2; t := position.x + a / 2; FParticle.position.X := random(round(t - s)) + s + 1; FParticle.position.Y := m * FParticle.position.X + n; end;
|
Vielen Dank schonmal.
mfg