Interne Darstellung einer Geraden im Raum

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

Dienstag 3. Juni 2008, 21:29

Guten Abend!

Ich habe mich spontan dazu entschlossen, einen Raytracer in Python zu schreiben. Ich habe als erste Literatur eine Projektbeschreibung zu Rate gezogen.
Eine Strahl-Klasse, Operatoren hat geschrieben:Damit die Strahl-Klasse verwendbar ist, brauchen wir eine Möglichkeit, um für einen bestimmten Geradenparameter einen Ortsvektor zu erhalten. Es bietet sich an, analog zur Skalierung von Vektoren dafür den Multiplikationsoperator zu missbrauchen [..]
Ich bin mir nun nicht sicher, wie man am tatsächlich geschicktesten eine Gerade implementiert. Die oben beschriebene Variante finde ich eigentlich etwas unglücklich, weil es mich zu sehr an die Multiplikation eines Skalars mit einem Vektor erinnert, was meiner Meinung nach im Code irreführend ist.
Meine erste Überlegung war, __getitem__ zu überschreiben, um die Ortsvektoren an den einzelnen Stellen via g[x] zu bestimmen.

Welche der beiden Möglichkeiten gefällt euch besser bzw. welche findet ihr intuitiver zu benutzen? Oder habt ihr einen schöneren Vorschlag?

Danke im voraus!
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Dienstag 3. Juni 2008, 22:38

http://www.joachim-bauch.de/projects/python/pytrace/

:]

der Mensch ist hier im Forum und würde sich über Mitarbeit sicher freuen ;)
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mittwoch 4. Juni 2008, 09:55

Mir gefaellt die __getitem__-Variante besser, das enstpricht etwas mehr mathematischer Schreibweise. Eine Gerade mit Ortsvektor x_0 und Richtungsvetkor r ist ja:

g = {g_lambda | g_lambda = x_0 + lambda*r fuer alle lambda in R}

Die Subscript-Notation g_lambda wir im Programm dann zu g[lambda].

Eine Klasse, die eine Gerade repraesentiert, Strahl zu nennen, ist ungluecklich, da ein Strahl eben keine Gerade ist.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

Mittwoch 4. Juni 2008, 12:32

Hallo!
Rebecca hat geschrieben:Mir gefaellt die __getitem__-Variante besser, das enstpricht etwas mehr mathematischer Schreibweise.
Das war auch mein Hintergrundgedanke, allerdings war ich mir nicht sicher, ob diese Variante nicht doch in irgendeiner Art und Weise ungeschickt wäre.
Rebecca hat geschrieben:Eine Klasse, die eine Gerade repraesentiert, Strahl zu nennen, ist ungluecklich, da ein Strahl eben keine Gerade ist.
Da stimme ich dir zu! Auf diese Idee wäre ich auch nicht gekommen, es ging primär nur um die Art der Implementation; die Klassennamen in dem verlinkten Dokument sind generell etwas unpassend..

Danke euch beiden, das von audax erwähnte Projekt werde ich mir anschauen! :)
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
Antworten