Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Phalax

Frischling

  • »Phalax« ist der Autor dieses Themas

Beiträge: 82

Beruf: Student Media Systems

  • Private Nachricht senden

1

05.10.2012, 17:33

Simulation von Licht

Hey,

ich hab vor Lichtstrahlen in einem Spiel zu simulieren. Soll ungefähr so aussehen http://www.youtube.com/watch?v=Rtv4pHn6vWg.

Macht man das über Geradengleichungen oder geht das auch einfacher? Wäre über Ideen dankbar, da ich echt nicht weiß wie ich das angehen soll.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

05.10.2012, 17:54

Das ist eigentlich relativ einfach zu realisieren. Das Licht geht ja in diese Dreiecke rein und kommt dann an einer Seite wieder raus. Dabei kommt es aber immer an der Hypothenuse des Dreiecks raus und das im 90° Winkel. Du kannst die Rotation des Lichtstrahls also ganz einfach durch die Rotation des Dreiecks berechnen. Sicherlich kannst du da mit der Geradengleichung ran gehen. Einfacher wäre es aber vermutlich wenn du mit Vektoren arbeiten würdest. Hängt aber auch immer ein bisschen davon ab womit du arbeitest. Benutzt du auch XNA wie in dem Video oder womit genau möchtest du das umsetzen? Ich würde einfach eine Art Pfad erstellen. Eine Liste aus Punkten, wobei immer zwei Punkte einen Strahl bestimmen.
Zum Beispiel hast du die Liste mit folgendem Inhalt: A, B, C, D.
Hier hast du die Geraden A_B, B_C und C_D, wobei A, B, C und D jeweils Punktvektoren sind. Falls du dich mit Vektoren nicht auskennst, solltest du da ein bisschen nachlesen. An sich bestimmt der Punktvektor aber einfach deine Koordinaten. Da es sich hier um zwei Dimensionen handelt, kennt der Vektor X und Y von dem jeweiligen Punkt. Wenn du jetzt einen Punkt A und einen Punkt B hast, kannst du eine Linie zwischen diesen Zeichnen. Jetzt kommt es drauf an wie du das machen kannst. Wenn du die Drehung über einen Richtungsvektor bestimmen kannst, dann kannst du einfach den Richtungsvektor der Geraden angeben. Im Falle von A_B wäre das B - A. Wie gesagt wenn du von Vektorrechnung keine Ahnung hast, solltest du dir das ganze mal ansehen, da es wirklich hilfreich ist. Wenn du einen Winkel angeben sollst, dann bestimmt du diesen Winkel (wie das geht weißt du vermutlich aus der Schule).
Es gibt natürlich auch andere Möglichkeiten das umzusetzen. Hängt auch davon ab, ob du dir eine Funktion schreibst, welche so eine Gerade zeichnet, oder ob du jedes mal mit Grafiken rumspielst und diese renderst. Da gibt es halt kein richtig oder falsch.
Mach dir einfach mal ein paar Gedanken dazu, schreib noch mal welche Engine oder was auch immer du benutzt und dann helfen wir dir schon irgendwie.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Phalax

Frischling

  • »Phalax« ist der Autor dieses Themas

Beiträge: 82

Beruf: Student Media Systems

  • Private Nachricht senden

3

05.10.2012, 17:59

Erstmal Danke für deine schnelle Antwort. Also ich wollte auch XNA benutzen und mit Vektorrechnung kenn ich mich schon aus. Auf jedenfall die Grundlagen.
Ich glaube wie du es beschrieben hast sollte ich es hinkriegen. Danke nochmal dafür. Weil mit Gradengleichungen und Schnitt dazwischen berechnen scheint mir etwas zu hochgegriffen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

05.10.2012, 18:05

Wie du deine Geraden jetzt intern hälst und wie deine Konzepte da aussehen ist an sich ja egal. Aber an sich wirds wohl das einfachste sein einfach den Anfangs und Endpunkt zu benutzen welchen du ja kennst. Wie du dann damit die Rotation/Richtung der Geraden bestimmt ist dann ja wieder egal. Bin mal gespannt. Poste hinterher mal wie du es umgesetzt hast.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige