Kugel richtig drehen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

TheProgrammer

Betreff: Kugel richtig drehen

BeitragMo, Mai 23, 2005 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.

Ich habe eine Kugel, die
ich flüssig drehen möchte...
Der Code:

Code: [AUSKLAPPEN]

Graphics3D 640,480,16,2
SetBuffer BackBuffer()

cam = CreateCamera()
PositionEntity cam,0,0,-10

piv = CreatePivot()
ent = CreateSphere(8,piv)
ScaleEntity ent,2,2,2
PositionEntity ent,0,0,0

WireFrame 1

speed# = 1

Repeat
Cls

RenderWorld()
speed# = 2

; -=1. Möglichkeit=-
;CameraProject(cam,EntityX(ent),EntityY(ent),EntityZ(ent))
;a_tan# = ATan2(MouseX()-ProjectedX(),MouseY()-ProjectedY())
;RotateEntity ent,pitch#,yaw#,0
;yaw# = yaw# + Sin(a_tan)*speed#
;pitch# = pitch# + Cos(a_tan)*speed#

 -=2. Möglichkeit=-
CameraProject(cam,EntityX(ent),EntityY(ent),EntityZ(ent))
winkel# = ATan2(MouseX()-ProjectedX(),MouseY()-ProjectedY())
RotateEntity piv,0,0,winkel#
TurnEntity ent,-speed#,0,0

Flip
Until KeyHit(1):End


Hier sind zwei Möglichkeiten der Drehung.
Eine funzt, sieht aber hässlich aus, da
sich die Kugel auf einer Linie bewegt.
Die andere würde besser aussehen, wenn
sie funzen würde.
Die Kugel wird da aber völlig verdreht, dass
die Drehachsen ganz woanders liegen.

Hat vieleicht jemand ne Idee, wie man die
Drehung richig realisieren kann?


Ich hoffe, mir kann jemand helfen.


Mfg
TheProgrammer
aktuelles Projekt: The last day of human being
 

Nobody-86

BeitragDi, Mai 24, 2005 12:09
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm... weis ich jetzt auch nciht so richtig, aber wozu soll das den gut sein? vieelciht gibt es eine ganmz andere lösung.
(: ---> nobody is perfect <--- Smile

TheProgrammer

BeitragDi, Mai 24, 2005 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
das soll halt so'ne rollende Murmel darstellen,
die sich physikalisch richtig drehen soll.
aktuelles Projekt: The last day of human being
 

Klaas

BeitragDi, Mai 24, 2005 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
meinst du sowas?

Code: [AUSKLAPPEN]


Graphics3D 640,480,16,2
SetBuffer BackBuffer()

cam = CreateCamera()
PositionEntity cam,0,0,-10

piv = CreateCube()
ent = CreateSphere(8,piv)
ScaleEntity ent,2,2,2
PositionEntity ent,0,0,0

WireFrame 1

speed# = 1

Repeat
Cls

RenderWorld()
speed# = 2

m=1
If m=1 Then
   CameraProject(cam,EntityX(ent),EntityY(ent),EntityZ(ent))
   
   divy# = MouseY() - GraphicsHeight()/2
   divx# = MouseX() - GraphicsWidth()/2
   mag# = Sqr(divx^2 + divy^2)
   divx = divx/mag
   divy = divy/mag
   
   opitch# = EntityPitch(ent,1)
   oyaw# = EntityYaw(ent,1)
   oroll# = EntityRoll(ent,1)
   
   AlignToVector piv,divy,divx,0,1
   RotateEntity(ent,opitch#,oyaw#,oroll#,1)
   TurnEntity piv,-mag/100,0,0
   
ElseIf m=2 Then
   ; -=1. Möglichkeit=-
   CameraProject(cam,EntityX(ent),EntityY(ent),EntityZ(ent))
   a_tan# = ATan2(MouseX()-ProjectedX(),MouseY()-ProjectedY())
   RotateEntity ent,pitch#,yaw#,0
   yaw# = yaw# + Sin(a_tan)*speed#
   pitch# = pitch# + Cos(a_tan)*speed#   
Else
   ; -=2. Möglichkeit=-
   CameraProject(cam,EntityX(ent),EntityY(ent),EntityZ(ent))
   winkel# = ATan2(MouseX()-ProjectedX(),MouseY()-ProjectedY())
   RotateEntity piv,0,0,winkel#
   TurnEntity ent,-speed#,0,0
End If

Flip
Until KeyHit(1):End

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group