作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个圆形仪表的 UIView,它有一只手围绕中心 anchor 旋转(想想:速度计)。我让它工作,所以手会旋转到使用层变换给定值的正确位置。
我希望用户能够将仪表指针拖动到另一个值。虽然我无法弄清楚这种交互 - 我可以在手上使用 UIPanGestureRecognizer 来获得平移点,但我如何从中计算调整后的手部角度?这实际上更像是一个几何问题。
此外,因为它是一个圆米,我不想仅根据平移点的 x 或 y 分量来调整角度。
最佳答案
如果我没听错的话,这是简单的几何:在极坐标系和笛卡尔坐标系之间转换。使用触摸点的位置求出圆周的角度(就像在极坐标中一样):
CGPoint touchPoint = ...;
double touchTheta = atanf(touchPoint.x, touchPoint.y);
然后你可以做一些事情,比如计算针的终点,给定它的长度(半径):
CGPoint needleEndpoint = (CGPoint){needleLength * sinf(touchTheta),
needleLength * cosf(touchTheta)};
关于ios - 通过触摸旋转圆规/仪表的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066374/
我是一名优秀的程序员,十分优秀!