Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Eines vorne weg das wird zimlich mathematisch.
Ich wollte eine soche Matrix2 passend zu Matrix1 finden das gilt:
Zitat:
VektorA--Matrix1-->VertorA--Matrix2-->VektorA
Damit das ganze lösbar ist bin ich davon ausgegangen das die Matrix1 nur eine Inditäts- Matrix ist, welche mit OpenGL Befehlen wie glRotate,glTranslate und glScale manipuliert wurde.
Als Teilschritt auf eine solche Matrix hin habe ich mir überlegt wie man die Rotation mit Hilfe einer Matrix umkehren kann.
Folgenden Code habe ich dafür entworfen:
Code:
type
Einheit =Double;
TVektor =record X,Y,Z,W:Einheit end;
TMatrix =array[0..3]of TVektor;
function AntiRotMatrix(const Matrix:TMatrix):TMatrix;
function MatrixaufVektoranwenden(Matrix:TMatrix;Vektor:TVektor):TVektor;
implementation
const
X=0;
Y=1;
Z=2;
W=3;
function Vektor(X,Y,Z,W:Einheit):TVektor;
begin
Result.X:= X;
Result.Y:= Y;
Result.Z:= Z;
Result.W:= W;
end;
function MatrixaufVektoranwenden(Matrix:TMatrix;Vektor:TVektor):TVektor;
Das ganze funktioniert zwar allerdings mit einer mißerrablen Genauikeit. Selbst die 3 Stelle nach dem Kommar stimmt manchmal nicht.
Darum meine Frage an euch:
Hat schon jemand so eine Art AntiMatrix Routine programmiert und wie soll ich da weiter vorgehen. Im Prinzip muss ich ja noch eine Scallierung und eine Verschiebung rückgängig machen und dann hätte ich es ja. Allerdings ist müßte ich davor erstmal die Genauikeit verbessern...
Wäre vielleicht doch Cos und Sin Funktionen besser dafür geeignet?
Hat einer von euch schonmal so etwas gemacht?
MfG
IFlo
_________________ Danke an alle, die mir (und anderen) geholfen haben. So weit... ...so gut
Das was du suchst heist Matrizeninversion - das erklär ich jetzt aber nicht, das ist nämlich nicht so ganz trivial. Kannst dich dann ja im Internet mal schlau machen, wies funktioniert und dann einen Blick in die geometry.pas von GlScene werfen, dort haben die das recht schnell gelöst.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Hier steht drin wie man die inverse Matrix berechnet, und auch vieles mehr. Dieses Matrix-FAQ sollte sich jeder Interessierte auf der Platte ablegen, da werden nämlich so gut wie alle Fragen abgeklärt.
Mitglieder in diesem Forum: 0 Mitglieder und 7 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.