Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:53

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Mär 02, 2004 16:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Hallo,

Habe folgendes Problem:
Vor ist als TVertex declariert und Ray.Direction auch.
Vor := NormalizeVector(Ray.Direction);
Doch es kommt der Fehler, das es inkompitable Typen sind.

ThX


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 16:20 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Du müsstest noch überprüfen, wie NormalizeVector implementiert ist - da man manchmal ursprüngliche Länge und normalisierten Vector braucht, gibt es in BaseGraph (das für elementare Aufgaben meist mehrere Aufrufmöglichkeiten zur Verfügung stellt) z.B. folgende Routine:

Code:
  1. function VectorNormalize(var v: TVec): float;
  2.  


mit der der übergebene Vektor normalisiert wird, und die ursprüngliche Länge als Skalar im Funktionsergebnis zurückliefert, da man diese zur Normalisierung ohnehin braucht - mit so etwas kann man bei rechenintensiven Aufgaben Zeit sparen - und ich nehme an, bei deiner Routine ist es ebenso (was für eine Bibliothek verwendest du denn?).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 16:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Ich verwende die OpenGL12... wobei ich gehört habe ich sollte lieber die DGLOpenGL nutzen, im nächsten Projekt ;)
Hat aber mit diesem Prob nichts zu tun oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 16:38 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Ich meinte eigentlich die Mathematikbibliothek, die du verwendest (z.B. Lischkes Geometry) - schau dir da mal im Inteface die Deklaration von VectorNormalize an, ob dies wirklich einen Vektor zurückliefert.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 16:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
VectorNormalize

NormalizeVector

Gibts beides, doch bei mir hatte ich das letztere, ich mache mal weiter :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 16:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Mars hat gesagt das du dir die Deklaration angucken sollst, die bloßen Funktionsnamen helfen nicht viel. Bei den meisten Geometriebibliotheken (bei meiner eigenen auch) wird der zu normalisierende Vektor nicht als Ergebnis zurückgeliefert, sondern als Var-Parameter übergeben und so normalisiert gespeichert. Also statt
Code:
  1. MyNorm := Normalize(MyVec)

sowas
Code:
  1. MyNorm := MyVec;
  2. Normalize(MyNorm);

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 16:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
function VectorNormalize(const v : TAffineVector) : TAffineVector; register;
asm
FLD DWORD PTR [EAX]
FMUL ST, ST
FLD DWORD PTR [EAX+4]
FMUL ST, ST
FADD
FLD DWORD PTR [EAX+8]
FMUL ST, ST
FADD
FSQRT
FLD1
FDIVR
FLD ST
FMUL DWORD PTR [EAX]
FSTP DWORD PTR [EDX]
FLD ST
FMUL DWORD PTR [EAX+4]
FSTP DWORD PTR [EDX+4]
FMUL DWORD PTR [EAX+8]
FSTP DWORD PTR [EDX+8]
end;

Wird also zurückgegeben oder?
Steht ja oben ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 16:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ja, dann ist entweder dein Vor oder dein Ray.Direction kein TAffineVector.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 16:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Ich habe doch geschrieben das es wenn ich den funktionsnamen änder funktioniert ;) ^^

Sorry, dann haste das vielleicht nicht so verstanden :-/ bzw. ich hab mich schlecht ausgedrückt ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 17:01 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@Gef: :roll: Manomanomanoman....

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 02, 2004 20:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
was willste damit sagen Flash?! ^^


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]