SCALEENTITY Cube..... rückwärts, auslesen?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

TOONY

Betreff: SCALEENTITY Cube..... rückwärts, auslesen?

BeitragMo, Mai 25, 2009 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
mit SCALEENTITY Cube, 2,2,2 gebe ich dem cube eine größe.

Läßt sich die größe auch abfragen?

z.B.:
x = entityscalex(cube)

Mr.Hyde

Newsposter

BeitragMo, Mai 25, 2009 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
GetMatElement enthält auf jeden Fall die Informationen, die du benötigst
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen

skey-z

BeitragMo, Mai 25, 2009 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Alternativ hat die "Blitz3d+" DLL einige Funktionen, die dir den Status zurück geben

Darunter auch GetEntityScaleX#/Y#/Z#
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

Darren

BeitragMo, Mai 25, 2009 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Mr.Hyde hat Folgendes geschrieben:
GetMatElement enthält auf jeden Fall die Informationen, die du benötigst


ich glaub das stimmt nicht ganz. sobald das object rotiert ist, enthalten die diagonalen nämlich nichtmehr nur den skalierungsfaktor, sondern in den werten ist auch die rotation mit reingewurschtelt. also ohne profunde kenntnisse über matrizen und winkelfunktionen lässt sich da recht wenig machen.

ich würde einfach beim scalieren den wert iwo abspeichern, damit du das einfach in einer variable stehen hast. ist auch schneller, als ewig mit funktionen rumzutun.
MFG Darren

Noobody

BeitragMo, Mai 25, 2009 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, so schwierig ist das auch wieder nicht. Die oberen drei Zeilen der Matrix stellen die Achsenvektoren des lokalen Koordinatensystems des Objekts dar - es reicht also, die Länge des Achsenvektors zu messen und man hat die Skalierung.

Der Code für die X - Achse sähe also so aus Code: [AUSKLAPPEN]
Function EntityScaleX#( Entity )
   VX# = GetMatElement( Entity, 0, 0 )
   VY# = GetMatElement( Entity, 0, 1 )
   VZ# = GetMatElement( Entity, 0, 2 )
   Return Sqr( VX#*VX# + VY#*VY# + VZ#*VZ# )
End Function


Die Funktionen für Y und Z sind analog - einfach beim zweiten Parameter von GetMatElement 1 bzw. 2 einsetzen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Darren

BeitragMo, Mai 25, 2009 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
haste recht. hatte ich nicht bedacht, macht aber sinn =) wieder was gelernt.
MFG Darren

The_Nici

BeitragDi, Mai 26, 2009 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
MeshWidth meshHeight und MeshDepth sollten doch reichen?

Noobody

BeitragDi, Mai 26, 2009 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funktioniert nur, wenn man ScaleMesh verwendet, nicht aber bei ScaleEntity.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Nicdel

BeitragFr, Mai 29, 2009 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Alle Funktionen:

Code: [AUSKLAPPEN]

Function EntityScaleX#(Entity)
   Vx# = GetMatElement(Entity, 0, 0)
   Vy# = GetMatElement(Entity, 0, 1)
   Vz# = GetMatElement(Entity, 0, 2)
   Scale# = Sqr(Vx#*Vx# + Vy#*Vy# + Vz#*Vz#)
   
   Return Scale#
End Function

Function EntityScaleY#(Entity)
  Vx# = GetMatElement(Entity, 1, 0)
   Vy# = GetMatElement(Entity, 1, 1)
   Vz# = GetMatElement(Entity, 1, 2)
   Scale# = Sqr(Vx#*Vx# + Vy#*Vy# + Vz#*Vz#)
   
   Return Scale#
End Function

Function EntityScaleZ#(Entity)
   Vx# = GetMatElement(Entity, 2, 0)
   Vy# = GetMatElement(Entity, 2, 1)
   Vz# = GetMatElement(Entity, 2, 2)
   Scale# = Sqr(Vx#*Vx# + Vy#*Vy# + Vz#*Vz#)
   
   Return Scale#
End Function
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group