我一直坚持使用偏移量来旋转资源。
Sstart = e.GetPosition(dial);
if (dial.IsStylusCaptured)
{
AngleRot = Math.Atan2((Y - Sstart.Y) , (X - Sstart.X));
radAngle = AngleRot / Math.PI * 180 + 180;
radAngle = radAngle - AthetaD;
di.RenderTransform = new RotateTransform(radAngle + 90);
} 使用这个,我能够将我的对象从0°旋转到x的θ角度。但当我做第二次旋转,而不是从偏移量x的θ角度旋转时,它会将对象重新设置为0°。我如何才能使偏移量始终是θ,而不是0°?

在这里我使用偏移角旋转

这里我的角度重新设置为0°,而不是从-56°移动
发布于 2021-04-26 12:22:25
设当前方向向量为(cx, cy)。
在开始时,将其设置为(1,0)或其他所需的值。
当您旋转拨号时,您就有了新的方向
nx = X - Sstart.X
ny = Y - Sstart.Y要将当前的方向矢量旋转到新的方向矢量,您需要计算相对角度。这种方法使用向量的叉积和点积。也许您需要更改第一个表达式的符号
Angle = Math.Atan2(nx * cy - ny * cx, cx * nx + cy * ny)
..apply rotation by Angle旋转后记住当前方向以便以后使用
cx = nx
cy = nyhttps://stackoverflow.com/questions/67249390
复制相似问题