Accueil > > > ROTATION 3D
ROTATION 3D
Information sur la source
Description
Code permettant de calculer la rotation d'un point en 3D autour d'un vecteur.
Source
- '' Ne pas oublier d'initialiser la constante DEGTORAD permettant de convertir les degrée en radian
- '' globalDEGTORAD As Double
- '' Dans form.laod par exemple je rajoute : DEGTORAD = (4 * Atn(1)) / 180
- ''
- ''
- '---------------------------------------------------------------------------
- ' Point en 3D
- '---------------------------------------------------------------------------
- Public Type Point3
- X As Double
- Y As Double
- Z As Double
- End Type
-
- global PI As Double
- global RADTODEG As Double
- global DEGTORAD As Double
-
- Function Rotation3D(Vect As Point3, Angle As Double, P1 As Point3) As Point3
- Dim MRotation(2, 2) As Double
- Dim Row As Integer
- Dim Col As Integer
- Dim Mid As Integer
- Dim I(2, 2) As Double
- Dim A(2, 2) As Double
- Dim A2(2, 2) As Double
- Dim Sn As Double
- Dim CosM1 As Double
- Dim AngleRadian As Double
-
- AngleRadian = Angle * DEGTORAD
-
- ' Matrice Identité
- I(0, 0) = 1: I(0, 1) = 0: I(0, 2) = 0:
- I(1, 0) = 0: I(1, 1) = 1: I(1, 2) = 0:
- I(2, 0) = 0: I(2, 1) = 0: I(2, 2) = 1:
-
- ' Rotation autour du vecteur
- A(0, 0) = 0: A(0, 1) = -Vect.Z: A(0, 2) = Vect.Y:
- A(1, 0) = Vect.Z: A(1, 1) = 0: A(1, 2) = -Vect.X:
- A(2, 0) = -Vect.Y: A(2, 1) = Vect.X: A(2, 2) = 0:
-
- ' A2 = A*A
- For Row = 0 To 2
- For Col = 0 To 2
- A2(Row, Col) = 0
- For Mid = 0 To 2
- A2(Row, Col) = A2(Row, Col) + A(Row, Mid) * A(Mid, Col)
- Next Mid
- Next Col
- Next Row
- Sn = Sin(AngleRadian)
- CosM1 = 1 - Cos(AngleRadian)
-
- ' rotation est I+sin(angle)*A+[1-cos(angle)]*A*A'
- For Row = 0 To 2
- For Col = 0 To 2
- MRotation(Row, Col) = I(Row, Col) + Sn * A(Row, Col) + CosM1 * A2(Row, Col)
- Next Col
- Next Row
-
- Rotation3D.X = MRotation(0, 0) * P1.X + MRotation(0, 1) * P1.Y + MRotation(0, 2) * P1.Z
- Rotation3D.Y = MRotation(1, 0) * P1.X + MRotation(1, 1) * P1.Y + MRotation(1, 2) * P1.Z
- Rotation3D.Z = MRotation(2, 0) * P1.X + MRotation(2, 1) * P1.Y + MRotation(2, 2) * P1.Z
-
-
- End Function
'' Ne pas oublier d'initialiser la constante DEGTORAD permettant de convertir les degrée en radian
'' globalDEGTORAD As Double
'' Dans form.laod par exemple je rajoute : DEGTORAD = (4 * Atn(1)) / 180
''
''
'---------------------------------------------------------------------------
' Point en 3D
'---------------------------------------------------------------------------
Public Type Point3
X As Double
Y As Double
Z As Double
End Type
global PI As Double
global RADTODEG As Double
global DEGTORAD As Double
Function Rotation3D(Vect As Point3, Angle As Double, P1 As Point3) As Point3
Dim MRotation(2, 2) As Double
Dim Row As Integer
Dim Col As Integer
Dim Mid As Integer
Dim I(2, 2) As Double
Dim A(2, 2) As Double
Dim A2(2, 2) As Double
Dim Sn As Double
Dim CosM1 As Double
Dim AngleRadian As Double
AngleRadian = Angle * DEGTORAD
' Matrice Identité
I(0, 0) = 1: I(0, 1) = 0: I(0, 2) = 0:
I(1, 0) = 0: I(1, 1) = 1: I(1, 2) = 0:
I(2, 0) = 0: I(2, 1) = 0: I(2, 2) = 1:
' Rotation autour du vecteur
A(0, 0) = 0: A(0, 1) = -Vect.Z: A(0, 2) = Vect.Y:
A(1, 0) = Vect.Z: A(1, 1) = 0: A(1, 2) = -Vect.X:
A(2, 0) = -Vect.Y: A(2, 1) = Vect.X: A(2, 2) = 0:
' A2 = A*A
For Row = 0 To 2
For Col = 0 To 2
A2(Row, Col) = 0
For Mid = 0 To 2
A2(Row, Col) = A2(Row, Col) + A(Row, Mid) * A(Mid, Col)
Next Mid
Next Col
Next Row
Sn = Sin(AngleRadian)
CosM1 = 1 - Cos(AngleRadian)
' rotation est I+sin(angle)*A+[1-cos(angle)]*A*A'
For Row = 0 To 2
For Col = 0 To 2
MRotation(Row, Col) = I(Row, Col) + Sn * A(Row, Col) + CosM1 * A2(Row, Col)
Next Col
Next Row
Rotation3D.X = MRotation(0, 0) * P1.X + MRotation(0, 1) * P1.Y + MRotation(0, 2) * P1.Z
Rotation3D.Y = MRotation(1, 0) * P1.X + MRotation(1, 1) * P1.Y + MRotation(1, 2) * P1.Z
Rotation3D.Z = MRotation(2, 0) * P1.X + MRotation(2, 1) * P1.Y + MRotation(2, 2) * P1.Z
End Function
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
3D rotation caméra [ par Radiohead4ever ]
RadioHead4Ever
Sauvegarde image apres rotation [ par alihome ]
Bonjour à tous,J'ai trouver un code pour faire une rotation de mon image dans une picturebox et je souhaiterais pouvoir l'enregistrer par la suite ''à
cube 3d en rotation [ par bobo91 ]
bonjour tous le mondecomme je connais pas le monde de directx sous vb6je m'adresse a vous pour m'aidera declarer directx et a construire les instrucio
VB.Net Calcul math ??? [ par JeffC1977 ]
Salut... Je fasi un calcul mathématique et certaine ligne de codefonctionne et une en particulière me donne une valeur bisare soit, -1.#INDOudblTextbo
Détermination d'angle et rotation d'image [ par bubulle122 ]
Bonjour, Je charge une image (carrée) avec un angle alpha inconnu par rapport à l'horizontale. Je voudrais déterminer cet angle et remettre mon image
Math 3D changement de repere [ par Stephane ]
Salut a tous voila j'ai beau brainer comme un dingue () j'arrive pas a trouver la relation qu'il faut. Voila le probleme Soit T le repere principal
Objets 3D independant en movements [ par sofien007 ]
je voudrais savoir comme faire pour que je puisse animer ou deplacer chaque objet 3d de mon univers indepedemment des autres. Merci
OpenGL & transformations [ par Stephane ]
Salut a tous Voila je debute en OpenGl. Je trace des lignes avec glBegin bmLines glVe
algo calcul mp3 [ par DarkLanfeust ]
Salut à tous !Je fais un TIPE sur le mp3 (exposé a présenter aux concours d'ecoles d'ingé), et il me manque cruellement un apport
Un INSERT trop lent !!!! [ par PtitGrumo ]
Bonjour tous,Sous Access VBA :Voila j'ai deux formulaires FormA et FormBLe FormA effectue des calculs sur des fiches saisi dans le formulaire FormBOui
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : DATAREPORTRE : DATAREPORT par sabrinelle
Cliquez pour lire la suite par sabrinelle
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|