Rotatetransform3D [Résolu]

Signaler
Messages postés
298
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
26 septembre 2009
-
Messages postés
298
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
26 septembre 2009
-
J'essaie de traduire  (en Basic)
http://viewport3d.com/trackball.htm

jusqu'à  delta = newQuaternion(axis, -angle),'Ca va
 mais je comprends rien aux 6 dernières lignes.

Voici le début.

Imports

System.Windows.Media.Media3D
Module

Bas_3D_Scene
'http://viewport3d.com/trackball.htm

Class Plateau

Dim
WithEvents Scene
As Viewport3D

Dim V1, V2
As Point3D

''' <summary>

''' Coordonn‚es de la souris

''' dans le treeview

''' en coordon‚es

''' sphŠriques virtuelles

''' de type TrackBall

''' </summary>

'''

''' <returns></returns>

''' <remarks></remarks>

Function TrackPosition(
ByVal Curseur
As Point)
As Vector3D

Dim v
As
New Point((Scene.Width / 2) - 1, 1 - (Scene.Height / 2))

Dim Z = 1 - v.X * v.X

If Z > 0
Then Z = Math.Sqrt(Z)
Else Z = 0

Dim P
As
New Vector3D(v.X, v.Y, Z)P.Normalize()

Return P

End
Function

Private
Sub Scene_MouseDown(
ByVal sender
As System.Object,
ByVal e
As MouseButtonEventArgs)
Handles Scene.MouseDownV1 = TrackPosition(e.GetPosition(Scene))

End
Sub

Private
Sub Scene_MouseUp(
ByVal sender
As System.Object,
ByVal e
As MouseButtonEventArgs)
Handles Scene.MouseUpV2 = TrackPosition(e.GetPosition(Scene))

Dim axis = Vector3D.CrossProduct(V1, V2)

Dim angle = Vector3D.AngleBetween(V1, V2)

Dim delta =
New Quaternion(axis, -angle)

Je vous remercie à l'avance pour vos commentaires.

Londonic

1 réponse

Messages postés
298
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
26 septembre 2009

Je croix avoir trouvé:

Dim rt
As
New RotateTransform3Drt = Scene.Camera.Transform

Dim r
As
New AxisAngleRotation3Dr = rt.Rotation

Dim q
As
New Quaternion(r.Axis, r.Angle)

Comme on peut pas égaliser à la sortie de la déclaration, le code devient aussi lourd que du C#, et c'est déroutant.
Si les cracks plaisantent avec la malchance plutot que d'aider les débutants... Adieu Basic...