【发布时间】:2021-07-18 19:24:57
【问题描述】:
我一直坚持使用偏移旋转资产。
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 的偏移量旋转到角度 theta。但是当我进行第二次旋转时,它不是从角度 theta 以偏移 x 旋转,而是将对象重置回 0°。我怎样才能使偏移量始终来自 theta 而不是 0°?
这里我用偏移角度旋转
这里我的角度重置为 0°,而不是从 -56° 移动
【问题讨论】:
-
很难理解您要达到的目标。也许您需要使用一个简单的函数来接收要旋转的点 (px, py)、旋转的中心点 (cx, cy) 和旋转角度 (alpha) 并返回结果点,如下所示:@987654326 @ ?
-
我用一些图片更新了我的帖子给你一个例子
-
好吧,我仍然不了解情况,图片也无济于事。让我们从头开始。您有一个坐标为 x1 和 y1 的点。正确的?你还有一个坐标为 x2, y2 的点。您有一个角度可以相对于第二个点旋转第一个点。旋转后,您将获得第一个点的新坐标。然后您可以对新坐标应用另一个旋转,依此类推。我的描述正确吗?
-
是的,没错。 x1 和 y1 在我上面的另一行中提到。 x2 和 y2 是在移动过程中生成的,因为它们是基于用户输入的。所以是的,你的描述是准确的。我认为这实际上是我在这里遇到的问题,我认为我的旋转角度没有设置为第一点
-
你需要在问题中说明圆形和三角形以及线条代表什么以及意图是什么。