Registriert: So Jan 07, 2007 21:26 Beiträge: 130 Wohnort: mal hier mal da mal irgendwo
Hi,
ich kenn nun schon die gleichung von kugel und ebene (sind ja auch ganz simple körper).
aber ich wollte mal fragen ob es auch noch für andere körper solche gleichungen gibt und wenn ja wie die dann aussehen
cuz bubble
_________________ Wenn Worte nichts als Worte sind, dann müssen's Steine sein! Solange - bis sie pleite sind - schmeißt Fensterscheiben ein! - Fidl Kunterbunt -
kommt halt drauf an, was man haben will.. gleichungen für superellipsoiden hab ich denk im meinem raytracer-projektethread beschrieben... ne würfel hat z.B.
Code:
|max( x1, x2, x3)| = 1 .
ne hochkanntgestellter würfel
Code:
|x1| + |x2| + |x3| = 1.
Einfache Rotationsobjekte lassen sich auch sehr leicht in dieser art beschreiben... das billigste ist wohl ne zylinder
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Hi,
ich hab mal ein Referat in Mathe über algebraische Flächen gehalten...
Die Visualisierung hab ich mit OpenGL gemacht (Fläche als Punktwolke dargestellt).
Hier habe ich die verschiedenen Körper gefunden, von denen ich manche Implementiert habe.
Außerdem fliegt bei mir noch die PowerPoint Präsentation von dem Referat rum... bei Interesse kann ich sie ja mal Online stellen.
Nun gut... sie beruht auf meinem Wissensstand von der 13 Klasse...
Registriert: So Jan 07, 2007 21:26 Beiträge: 130 Wohnort: mal hier mal da mal irgendwo
@Delphic:
Zitat:
|max( x1, x2, x3)| = 1 .
was macht dieses max()?
@alle:
wenn man sich die galerie von freigeist.cc anguckt, dann hat man z.B.
x^6+y^6+z^6=1
für einen würfel, gibt es einen system mit dem man diese art von gleichungen für vektorrechnungen machen kann?
bzw wie ich dann die gerade in form von x=p0+t*a umformen muss dass ich gleichsetzen kann oder so?
(meine frage bezieht sich ja darauf, weil ich nen raytracer schreibe und immer nur kugeln zu rendern da auch recht langweilig beim testen wird :S)
cuz bubble
_________________ Wenn Worte nichts als Worte sind, dann müssen's Steine sein! Solange - bis sie pleite sind - schmeißt Fensterscheiben ein! - Fidl Kunterbunt -
was macht dieses max()? Das max sucht das Maximum der Parameter. War uebrigens ein kleiner Fehler drin, die Betragsstriche gehoeren nach innen.
Code:
max(| x1|, |x2|, |x3|) = 1 .
thebubble hat geschrieben:
@alle: wenn man sich die galerie von freigeist.cc anguckt, dann hat man z.B. x^6+y^6+z^6=1
Vorsicht, das ist ein Wuerfel mit runden Ecken!!!
thebubble hat geschrieben:
für einen würfel, gibt es einen system mit dem man diese art von gleichungen für vektorrechnungen machen kann? bzw wie ich dann die gerade in form von x=p0+t*a umformen muss dass ich gleichsetzen kann oder so?
(meine frage bezieht sich ja darauf, weil ich nen raytracer schreibe und immer nur kugeln zu rendern da auch recht langweilig beim testen wird :S)
Schau doch mal bei meinem Raytracer Thread vorbei. Da stehen ein paar Gleichungen und Begriffe mit drin, nach denen Du im Netz suchen kannst - jedes Buch ueber den Bau von Raytracern versorgt Dich damit noch schneller, wenn Du noch nicht die Erfahrung hast solche Gleichungen selbst aufzustellen. Ansonsten kann man einen Wuerfel auch mit 4 Ebenen bauen...
Zuletzt geändert von Delphic am Fr Jun 19, 2009 05:54, insgesamt 1-mal geändert.
Registriert: So Jan 07, 2007 21:26 Beiträge: 130 Wohnort: mal hier mal da mal irgendwo
hi,
altes thema aber immer noch das gleiche problem
ich habe folgende geraden gleichung
Code:
(x1) (p1) (a1)
I: (x2)=(p2)+(a2)*t
(x3) (p3) (a3)
und folgende körpergleichung (wie schon oben)
Code:
II: x^6+y^6+z^6=1
wie muss ich nun I in II einstetzen damit ich nach t umstellen kann?
cuz bubble
_________________ Wenn Worte nichts als Worte sind, dann müssen's Steine sein! Solange - bis sie pleite sind - schmeißt Fensterscheiben ein! - Fidl Kunterbunt -
Auspultiplizieren darfst du selbst. Bekommst ein Polynom vom Grad 6. Kannst du dann numerisch lösen - z.B. mit dem Satz von Sturm die Position der Nullstellen eingrenzen und dann mit Newtonverfahren die Nullstellen rausziehen.
Registriert: So Jan 07, 2007 21:26 Beiträge: 130 Wohnort: mal hier mal da mal irgendwo
Jehu endlich weiß ich wie das geht, jetzt vergrößert sich endlich das Spektrum der Körper meines Raytracers
ty
cuz bubble
_________________ Wenn Worte nichts als Worte sind, dann müssen's Steine sein! Solange - bis sie pleite sind - schmeißt Fensterscheiben ein! - Fidl Kunterbunt -
Registriert: So Jan 07, 2007 21:26 Beiträge: 130 Wohnort: mal hier mal da mal irgendwo
Code:
max(| x1|, |x2|, |x3|) = 1
Das ist ja die Funktion für einen Würfel. Aufgrund der Max-Funktion komme ich aber irgendwie überhaupt nicht mehr klar
Wenn ich den Würfel nun eine Position geben möchte muss ich ja eigentlich jedes Xi noch mit Posi subtrahieren. Für eine Schnittpunktberechnung, muss ich dann halt meine Gerade für Xi einsetzen. Danach wird nach t, dem Skalierungsfaktor für den Richtungsvektor umgestellt. Ich hab hier 5 Blätter mit unterschiedlichen Lösungsansetzten und damit auch 5 unterschiedlichen Lösungen, von denen alle falsch sind.
Kann mir vielleicht jemand zeigen, wie man das umstellen muss, im Internet finde ich auch nichts was mir ein wenig mehr Klarheit verschafft.
cuz bubble
_________________ Wenn Worte nichts als Worte sind, dann müssen's Steine sein! Solange - bis sie pleite sind - schmeißt Fensterscheiben ein! - Fidl Kunterbunt -
da gibts ein paar anmerkungen: würfel bestehen aus 6 seiten... man könnte also auch 6 quadrate oder 12 dreiecke zum schnitt bringen.
Die Formel mit dem Max ist nichts anderes als die Variante mit den 6 Seiten, denn: das max macht im Prinzip die Bedingungen unabhängig. Also betrachten wir nur mal eine davon:
Code:
|x1|=1
den betrag lösen wir auf indem wir in zwei fälle zerlegen:
Code:
I) x1=1
II) -x1=1
Das löst sich leicht auf und gibt Schnittpunkte mit zwei Ebenen I, II. Dann haben wir aber erst eine Bedingung erfüllt. Um den Rest zu prüfen, prüfen wir zusätzlich ob die Schnittpunkte die Bedingungen
Code:
|x2|<=1
|x3|<=1
erfüllen. Wenn ja dann sind das "gute Schnittpunkte", wenn nicht können Sie verworfen werden.
Das Spiel kann jetzt mit |x2|=1 und |x3|=1 statt |x1|=1 wiederholt werden.
Ist jedenfalls die Variante, die die Formulierung mit dem max nahelegt.
Registriert: So Jan 07, 2007 21:26 Beiträge: 130 Wohnort: mal hier mal da mal irgendwo
Hmm Quasi ist die "1" die Größe des Würfels oder täusche ich mich?
Wenn ich mit Positionen arbeite müsste ich dann noch Pi von Xi abziehen oder?
_________________ Wenn Worte nichts als Worte sind, dann müssen's Steine sein! Solange - bis sie pleite sind - schmeißt Fensterscheiben ein! - Fidl Kunterbunt -
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.