gpt4 book ai didi

ios - 使用约束从用户点击计算点坐标

转载 作者:行者123 更新时间:2023-11-29 02:25:50 26 4
gpt4 key购买 nike

我正在尝试计算与点击位置相对应的圆上的坐标。坐标应位于距离点击位置最近的圆的边界上(例如,距离半径较近的边界)。为了方便这一点,我只检测距离圆心 80% 半径的轻敲。

enter image description here

输入:

  • P (GPPoint) - 圆心
  • P1 (GPPoint) 显示图像的当前位置
  • r (float) 圆的半径
  • P3 (CGPoint) 用户点击坐标

期望的输出:

P2 (CGPoint) - 对应于 P3 但沿圆的图像的新坐标。抱歉解释不好,我试着换句话说:一旦用户点击屏幕,我想移动 P2 中的图像。 P2 应通过将 P2 移动到圆的边界来导出。使用半径信息应该可以做到这一点。

想法是从 P3 坐标创建一个名为 P2 的新坐标,如上所述 - 关键是 P2 到中心的距离应该与半径完全对应,ANGLE应该与点击点。

有人能推荐一个公式来计算给定点击的相应坐标吗?我只需要使用我的输入来计算 P3。

到目前为止的代码:

-(void)tapInImageView:(UITapGestureRecognizer *)tap
{
CGPoint tapPoint = [tap locationInView:tap.view];

if ([self isInOuternCircle:tapPoint]) {

// then create from tapPoint coordinates a new coordinate P2 as described above - but have no idea how.. the key is that P2 distance from the centre should correspond exactly to the radius and the ANGLE should be the same as tapPoint.
}
}

-(BOOL)isInOuternCircle:(CGPoint)point
{
double distanceToCenter = sqrt((point.x - _timerView.center.x)*(point.x - _timerView.center.x) + (point.y - _timerView.center.y)*(point.y - _timerView.center.y));

if (distanceToCenter < _innerCircleRadius) {
return false;
}
return true;
}

最佳答案

我以前做过一次,但数学通常取决于你如何设置你的坐标系,所以我只概述我做了什么。您需要一些几何知识和一些公式来确定沿圆的新坐标。

  1. 使用以下公式计算通过中心 (P) 和您的分接点 (P3) 的直线:http://en.wikipedia.org/wiki/Linear_equation#Two-point_form
  2. 确定你的圈子的方程式:http://en.wikipedia.org/wiki/Circle#Equations
  3. 使用以上两个方程,您将得到一个线性和二次方程组:http://www.mathsisfun.com/algebra/systems-linear-quadratic-equations.html

一旦你有了上面的等式,你就需要解决它。结果将产生两个可能的点(线将在两个地方与圆相交),而您正在寻找的点是更靠近抽头点的点。在这种情况下,只需比较两个解决方案到 P3 的距离,较短的距离将显示您所需的解决方案 - P2。

关于ios - 使用约束从用户点击计算点坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com