Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009
-
6 mars 2009 à 14:24
Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009
-
6 mars 2009 à 20:25
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
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009 6 mars 2009 à 20:25
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...