Potenz-Formel auflösen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Schrompf
Moderator
Beiträge: 5161
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Potenz-Formel auflösen

Beitrag von Schrompf »

Hallo,

tut mir leid, aber ich bin erneut auf eure Zeit und Fähigkeiten angewiesen. Es geht um das Auflösen einer Potenzformel, um einen Schnittpunkt Strahl mit geometrischem Körper zu berechnen.

Ausgehend von der Kugel (Radius r, Zentrum im Nullpunkt)

r^2 = (x0 + t*xv)^2 + (y0 + t*yv)^2 + (z0 + t*zv)^2

mit dem Strahl-Startpunkt (x0, y0, z0) und der Strahlrichtung (xv, yv, zv) entlang der Variable t. Das nach t aufgelöst ergibt den Schnittpunkt mit einer Kugel. Prima. Bekomme ich selbst noch hin. Und jetzt kommt der Ärger. Ich möchte nämlich keine Kugel, sondern eine geometrische Form, die ich mehr in Richtung Würfel formen kann. Dafür könnte ich einfach den Exponenten erhöhen - ein ^5 anstatt dem schlichten Quadrieren ergibt bereits eine sehr schöne Form. Und nach meinem Verständnis müssten, abs() vorausgesetzt, auch alle entstehenden Formen konvex sein und immer exakt 2 Schnittpunkte haben. Aber ich schaffe es nicht, die Formel für beliebige Exponenten außer 2 und 1 aufzulösen.

Meine Frage also an Euch: wie löse ich folgende Formel für beliebige Exponenten e > 0 nach t auf?

r^e = |x0 + t*xv|^e + |y0 + t*yv|^e + |z0 + t*zv|^e

Die Online-Formelrechner, die ich finden konnte, kapitulieren leider alle vor dieser Formel, aber mit Funktionsplottern habe ich zumindest den 2D-Fall bereits durchgeprobt. Es müsste eine Lösung dafür geben.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Potenz-Formel auflösen

Beitrag von eXile »

Ab \($e \geq 5$\) ist das ein Polynom mind. 5. Grades, d.h. es gibt keine geschlossene Lösung mehr. Du könntest allerdings einen numerischen Nullstellenfinder benutzen.
Matthias Gubisch
Establishment
Beiträge: 505
Registriert: 01.03.2009, 19:09

Re: Potenz-Formel auflösen

Beitrag von Matthias Gubisch »

Also Wolframalpha findet mehrere Lösungen:

http://www.wolframalpha.com/input/?i=solve[r^5+%3D+%28t*x%29^5%2B+%28t*y%29^5%2B%28t*z%29^5%2Ct]

http://www.wolframalpha.com/input/?i=r^ ... 28t*z%29^5

Bei deiner "Kugel" müsstest du 0-2 unterschiedliche Lösungen erhalten für die Wurzeln, wenn ich mich nicht täusche.
Kannst ja mal eine von Hand mit dem Taschenrechner durchspielen ob das passt.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Matthias Gubisch
Establishment
Beiträge: 505
Registriert: 01.03.2009, 19:09

Re: Potenz-Formel auflösen

Beitrag von Matthias Gubisch »

eXile hat geschrieben:Ab \($e \geq 5$\) ist das ein Polynom mind. 5. Grades, d.h. es gibt keine geschlossene Lösung mehr. Du könntest allerdings einen numerischen Nullstellenfinder benutzen.

Im allgemeinen Fall nicht, in diesem speziellen Fall sollte es aber doch Möglich sein oder?
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Potenz-Formel auflösen

Beitrag von eXile »

Matthias Gubisch hat geschrieben:Im allgemeinen Fall nicht, in diesem speziellen Fall sollte es aber doch Möglich sein oder?
Mathematica hat geschrieben:Assuming[e \[Element] Integers,
Solve[r^e == (x0 + t*xv)^e + (y0 + t*yv)^e + (z0 + t*zv)^e, t]]


Solve::tdep: The equations appear to involve the variables to be \
solved for in an essentially non-algebraic way. >>
Benutzeravatar
Schrompf
Moderator
Beiträge: 5161
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: Potenz-Formel auflösen

Beitrag von Schrompf »

Die Reste meines Studienwissens meinen auch, dass das im Allgemeinen bald nicht mehr lösbar ist. Aber ich hatte gehofft, es gäbe wegen der speziellen Eigenschaften der resultierenden Körper in diesem Spezialfall schon einen Lösungsweg. Zumal ja auch reelle Exponenten denkbar wären - die resultierenden Körper nähern sich mit steigendem Exponent stetig der Würfelform an.

Wenn das alles nix wird, ist eine iterative Lösung eine gute Idee. Das Ganze soll nachher eh im Fragment Shader passieren, heute GPUs sollten auch mit 10 bis 15 Iterationen davon keinen Stress haben.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Antworten