我有一种方法可以转换多个柱面。如果我再次运行该方法,它会将气缸从原始位置而不是新位置变换。
是否有“应用”转换,以便更改柱面的基础值,以便我可以从新值重新转换?
有人可以帮忙吗?
干杯,
安迪
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);
}
答案 0 :(得分:5)
每次调用方法时,您都会重新设置Transform3DGroup
:
var myTransform3DGroup = new Transform3DGroup();
变换本质上是一堆矩阵,它们相乘。每次创建新组时,您都要清除该堆栈。您需要将连续变换添加到现有组,而不是重新制作它。