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