I have a ModelVisual3D with some cubes in it. If I want to rotate the whole group by its center, how do I do that?
Here is my code:
RotateTransform3D rt;
AxisAngleRotation3D ar;
Transform3DGroup grp;
rt = new RotateTransform3D();
ar = new AxisAngleRotation3D();
ar.Axis = new Vector3D(1, 0, 0);
ar.Angle = x; //x a value 0-360
rt.Rotation = ar;
rt.CenterX = //*Here i need the center of the ModelVisual3D X*
rt.CenterY = //*Here i need the center of the ModelVisual3D Y*
rt.CenterZ = //*Here i need the center of the ModelVisual3D Z*
grp = new Transform3DGroup();
grp.Children.Add(rt);
cubes.Transform = grp; //cubes is the ModelVisual3D object that i want to rotate
You can calculate the average of all points. P-Code:
This is then your center.
In a simple physics simulation, you would add a weight to each point.