2009-08-17 3 views
1

J'ai une méthode qui transforme un certain nombre de cylindres. Si j'exécute la méthode une seconde fois, les cylindres sont transformés de leur position d'origine plutôt que de leur nouvelle position.WPF 3D - Appliquer une transformation, modifier les valeurs d'objet sous-jacentes

Est-il possible d'appliquer la transformation de sorte qu'elle modifie les valeurs sous-jacentes des cylindres pour que je puisse re-transformer à partir des nouvelles valeurs?

Quelqu'un peut-il vous aider?

Cheers,

Andy

void TransformCylinders(double angle) 
    { 

     var rotateTransform3D = new RotateTransform3D { CenterX = 0, CenterY = 0, CenterZ = 0 }; 
     var axisAngleRotation3D = new AxisAngleRotation3D { Axis = new Vector3D(1, 1, 1), Angle = angle }; 
     rotateTransform3D.Rotation = axisAngleRotation3D; 
     var myTransform3DGroup = new Transform3DGroup(); 
     myTransform3DGroup.Children.Add(rotateTransform3D); 
     _cylinders.ForEach(x => x.Transform = myTransform3DGroup); 

    } 

Répondre

4

Vous Refaire le Transform3DGroup chaque fois que la méthode est appelée:

var myTransform3DGroup = new Transform3DGroup(); 

Transforme sont essentiellement une pile de matrices qui se multiplie ensemble. Vous effacez cette pile chaque fois que vous créez un nouveau groupe. Vous devez ajouter des transformations consécutives au groupe existant plutôt que de le refaire.

+0

Excellent, merci pour cela! –

Questions connexes