首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度偏移和正/负角度

角度偏移和正/负角度
EN

Stack Overflow用户
提问于 2021-04-25 11:06:11
回答 1查看 72关注 0票数 0

我一直坚持使用偏移量来旋转资源。

代码语言:javascript
复制
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°移动

EN

回答 1

Stack Overflow用户

发布于 2021-04-26 12:22:25

设当前方向向量为(cx, cy)

在开始时,将其设置为(1,0)或其他所需的值。

当您旋转拨号时,您就有了新的方向

代码语言:javascript
复制
nx = X - Sstart.X
ny = Y - Sstart.Y

要将当前的方向矢量旋转到新的方向矢量,您需要计算相对角度。这种方法使用向量的叉积和点积。也许您需要更改第一个表达式的符号

代码语言:javascript
复制
Angle =  Math.Atan2(nx * cy - ny * cx, cx * nx + cy * ny)
..apply rotation by Angle

旋转后记住当前方向以便以后使用

代码语言:javascript
复制
cx = nx
cy = ny
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67249390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档