2016-12-11 1 views
1

Je travaille sur un projet utilisant le paquet RGL dans la programmation R. J'aimerais que quelqu'un puisse m'aider avec la fonction play3d de la même chose.Play3d dans le paquet RGL

Voici ce que je prévois faire. J'ai un polygon3d (x, y, z) qui trace un polygone sur la fenêtre de sortie et maintenant je voudrais le traduire avec une valeur à chaque itération, disons de 10 unités pour 5 tours.

J'ai recherché mais toutes les ressources disponibles concernent la rotation du polygone pour la durée t. Exemple d'un tel cas est la suivante:

M <- par3d("userMatrix") 
play3d( 
    par3dinterp(userMatrix=list(M,rotate3d(M, angle=pi, x=1 ,y=0, z=0))), 
    duration=10 
) 

Le code ci-dessus tourne mon polygone le long de l'axe x pour 10 secondes et les arrêts.

Je veux traduire mon polygone pendant 10 secondes avec quelques paramètres donnés spécifiant combien traduire à chaque seconde. Mon polygone est fondamentalement un signe plus (représentant un quadcoptère) et je veux montrer le mouvement comme s'il s'élevait du sol (axe x-y) dans l'air (axe z).

Toute aide sera grandement appréciée.

Merci à tous

Répondre

0

Vous devez utiliser la transposition d'une matrice de traduction pour le faire. Par exemple, pour traduire par (x, y, z), utilisez

M <- par3d("userMatrix") 
play3d( 
    par3dinterp(userMatrix=list(M, M %*% t(translationMatrix(x, y, z)))), 
    duration=10 
) 

Cela se fait dans le? Exemple de rgl.setMouseCallbacks. Edité pour ajouter des valeurs x, y, z pour répondre à la question ci-dessous.

+0

Thanls pour l'aide !! Mais pouvez-vous spécifier comment je peux mentionner les unités qu'il devrait traduire. Je ne suis pas au courant de ce qu'est la M-matrice. Pouvez-vous m'aider un peu avec la partie traduction? :) –

+0

Merci beaucoup, je l'avais essayé au départ mais le polygone revient à ses coordonnées d'origine (0,0,0). En d'autres termes, il se re-traduit à sa position d'origine comme un pendule. De plus, mes distances de translation sont x = 133, y = 150, z = 100, puis le polygone vole à droite de l'écran. –