www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Vektoren" - Raytracer Vektorrechnung
Raytracer Vektorrechnung < Vektoren < Lin. Algebra/Vektor < Oberstufe < Schule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Vektoren"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Raytracer Vektorrechnung: Problembeschreibung
Status: (Frage) beantwortet Status 
Datum: 23:42 So 20.08.2006
Autor: LittleJon

Ich möchte (muss für die Schule) einen Raytracer programmieren.
Dazu hab ich mir die benötigte Mathematik mal überlegt, und erste theoretische Ansätze gemacht.

Nun habe ich folgendes Problem: Ich habe eine Kamera, die definiert ist durch eine Position, einen Vektor wohin sie guck und einen Vektor der nach oben zeigt (für die Z-Achsenrotation). Daraus muss ich jetzt 4 Punkte berechnen die quasi die Bildebene wiedergeben. (Das Prinzip ist ja, dass man von der Kamera durch jeden Punkt im Bildschirm einen Strahl schießt und guckt wo er was trifft). Dazu habe ich die Auflösung und einen Winkel für das Sichtfeld.
Meine erste Idee war das ersteinmal 2D anzugehen, quasi von oben. Dadruch würde man die Punkte berechnen die links und rechts genau in der Mitte der Fläche liegen. Hat man die, kann man durch den nach obne zeigenden Vektor die 4 gesuchten Punkte unter berücksichtigung der Seitenverhältnisse relativ einfach ausrechnen.

v Vektor der angibt wohin die Kamera guckt
u Vektor der von der Kamera nach oben zeigt
a Vektor von Kamera zum gesuchten Punkt
[mm] \alpha [/mm] Winkel fürs Sichtfeld / 2

Um die ersten beiden Punkte zu errechnen hatte ich folgenden Ansatz:
Zwischen a und v muss ien Winkel von [mm] \alpha [/mm] sein.
a und u müssen senrecht zueinander sein.

[mm] a\*v=\alpha [/mm]
[mm] a\*u=0 [/mm]

[mm] a\*v-\alpha=a\*u [/mm]

[mm] a\*v [/mm] - [mm] a\*u =\alpha [/mm]

[mm] a\*(v-u)=\alpha [/mm]

So, normalerweise müssten jetzt 2 Punkte rauskommen, wiel es eigneltich genau 2 Lösungen geben müsste. Da ich u und v habe könnte ich es vorberechnen, hätte dann alerdings 2 Vektoren und ihren Winkle in der Gelicung. Da einer der Vektoren unbekannt ist, schein ich das nicht auflösen zu können, denn es gibt zu einem Vektor ja Prinzipiell unendlich viele andere Vektoren die einen bestimmten Winkel zm ersten haben.

Was muss ich machen, damit ich die beidne Punkte, bzw Vektoren a1 und a2 berechnen kann?
Wem ich das mit dem Raytracerprinzip zu ungenau erklärt habe, findet auf []Wikipedia eine ausführlicherere Version.

        
Bezug
Raytracer Vektorrechnung: Antwort
Status: (Antwort) fertig Status 
Datum: 10:40 Di 22.08.2006
Autor: goeba

Hi,

das Problem ist in der Tat, dass die Lösung nicht eindeutig sein kann.

Am Einfachsten kannst Du das umgehen, indem Du die Vektoren u und v normierst, das heißt durch ihre eigene Länge teilst.

Viele Grüße,

Andreas

Bezug
                
Bezug
Raytracer Vektorrechnung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:31 Mi 23.08.2006
Autor: LittleJon

Versteh ich nciht, wie ich das machen soll.

Mein Mathelehrer hat auch was von Längen geredet, und das mans auch mit Ebenen machen kann. Tja, damit hatte ich kein Erfolg. ich hab die Parameterebenengelchung (oder wie die heißt) ax.by.cz+d=0 genommen.
Da ich anfangs ja die Kameraposition bei 0 hatte (das braucht ja erst beim Ausgangsvektor der Geradengelichungen brücksichtig werden) habe ich wieder das Kreuzprodukt also, genau das wie in meinem ersten Ansatz.

Ich komme wieder auf 2 Geichugen, die einen Vektor und einen Winkel zu einem andern Vektor beinhalten und  muss daraus den Vektor bestimmen.
Ich meine, Mathematisch muss es möglich sein, einen Vektor zu bestimmen, der zu einem Vektor senkrecht ist und zu einem andern einen festen Winkel hat. Bzw. eigentlich müssen es ja zwei sein. Ich brauch auch 2 daher passt das ja perfekt.

Ich denke man muss das irgendwie anders umformen. Über die Längen geht es irgendwie auch nicht, da die ja alle 1 sein müssten (u und v sind auf jeden Fall normalisiert, bei a ist es egal wie lang der wird, 1 wäre natürlich nicht schlecht).

Bezug
                        
Bezug
Raytracer Vektorrechnung: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:47 Mi 23.08.2006
Autor: LittleJon

Ich habe mir weitere Gedanken gemacht.
Prinzipiell will ich den Vektor v um Alpha Grad drehen würde. Als drehachse müsste der Vector u dienen. Dafür muss es doch eine Mathematische Formel gegen?

Bezug
                        
Bezug
Raytracer Vektorrechnung: normieren
Status: (Antwort) fertig Status 
Datum: 21:16 Fr 25.08.2006
Autor: Christian

Hallo.

Das Problem ist in der Tat, daß es eine unendlich große Auswahl an Lösungen für das Problem gibt. Das liegt daran, daß, wenn ein Vektor a zu einem Vektor b senkrecht ist und zum Vektor c den Winkel alpha hat, so ist prinzipiell auch z.B. der Vektor 2a eine Lösung des Problems. Das führt uns aber auch schon zur Lösung dieser Schwierigkeit, denn der Trick besteht darin, die Länge des Vektors a vorzugeben, am besten auf 1. Damit bekommst Du eine neue Gleichung dazu, nämlich $|a|=1 [mm] \gdw \left|\vektor{a_x \\ a_y \\ a_z}\right|^2=1 \gdw a_x^2+a_y^2+a_z^2=1$. [/mm]
Dadurch bekommst Du dann genau die 2 Lösungen, die Du Dir vorstellst.

Gruß,
Christian

Bezug
        
Bezug
Raytracer Vektorrechnung: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:55 Mi 23.08.2006
Autor: felixf

Hallo!

Schau dir doch mal das []Kreuzprodukt bzw. Vektorprodukt an. Das ist genau das was du suchst.

LG Felix


Bezug
                
Bezug
Raytracer Vektorrechnung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 23:00 Mi 23.08.2006
Autor: LittleJon

Soll ich also das Gleichungssystem so aufbauen, dass eine Bedingung der Winkel zu v-Cektor ist, und die Zweite, das das Vektorprodukt des zu errechneten Vektors a und dme v-Vektor den u Vekotr ergeben soll?
Weil, ansonsten wüsste ich nicht wie ich sonst mit dem Kreizprodukt rechnen sollte.

Bezug
                        
Bezug
Raytracer Vektorrechnung: Antwort
Status: (Antwort) fertig Status 
Datum: 09:41 Do 24.08.2006
Autor: felixf

Hallo!

> Soll ich also das Gleichungssystem so aufbauen, dass eine
> Bedingung der Winkel zu v-Cektor ist, und die Zweite, das
> das Vektorprodukt des zu errechneten Vektors a und dme
> v-Vektor den u Vekotr ergeben soll?

Du solltest kein Gleichungssystem aufstellen, sondern damit direkt die Vektoren `rechts' und `oben' fuer die Projektionsflaeche ausrechnen.

Du hast am Anfang einen Vektor $v$, der nach vorne zeigt, und einen Vektor $u$, der nach oben zeigt. Das Kreuzprodukt $r := v [mm] \times [/mm] u$ zeigt dann nach rechts, und $r [mm] \times [/mm] v$ zeigt nach oben (wenn $v$ und $u$ nicht senkrecht zueinander waren, solltest du besser diesen Vektor als oben-Vektor nehmen). Die Vektoren normierst du dann alle, und damit kannst du dir dann die Projektionsflaeche basteln durch die du die Strahlen schiesst.

LG Felix



Bezug
                                
Bezug
Raytracer Vektorrechnung: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:18 Do 24.08.2006
Autor: LittleJon

So, ich habe jetzt endlich einen gescheiten Ansatz der funktionieren sollte.

Wenn ich nun also den Vektor Oben (Vektor U) den nach vorne (Vektor V) und den nach links oder rechts haben (Vektor R), die alle die Länge eins haben, müsste ich doch nur noch den tangensdes Winkels bestimmen, und zum Vektor V den Vektor [mm] R*tan(\alpha) [/mm] addieren. Und zwar einmal den Original Vektor und einmal den negativen Vektor um so die beidne gesuchten Punkte zu erhalten.

Bezug
                                        
Bezug
Raytracer Vektorrechnung: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:37 Do 24.08.2006
Autor: felixf

Hallo!

> So, ich habe jetzt endlich einen gescheiten Ansatz der
> funktionieren sollte.
>  
> Wenn ich nun also den Vektor Oben (Vektor U) den nach vorne
> (Vektor V) und den nach links oder rechts haben (Vektor R),
> die alle die Länge eins haben, müsste ich doch nur noch den
> tangensdes Winkels bestimmen, und zum Vektor V den Vektor
> [mm]R*tan(\alpha)[/mm] addieren. Und zwar einmal den Original Vektor
> und einmal den negativen Vektor um so die beidne gesuchten
> Punkte zu erhalten.

Genau.

Viel Spass beim weiteren Formeln finden und Implementieren :-)

LG Felix


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Vektoren"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]