找两点之间的一点

时间:2009-11-08 00:37:06

标签: iphone math geometry quartz-graphics

我在屏幕上有两个同心圆,我想让内侧的圆圈四处移动,同时用户将手指拖到较大圆圈的外侧。这意味着我有两个点,较大圆圈的中心和用户触摸的点。如何计算较小圆圈的中心位置?

2 个答案:

答案 0 :(得分:3)

好的,如果你画的是人眼,那就完全不同了。

如果我们从以下值开始

  • re:眼睛的半径
  • rp:瞳孔的半径
  • p1 = (x1, y1):坐标 眼睛的中心
  • p2 = (x2, y2):坐标 用户触摸
  • v1 = [x3; y3]p1p2之间的方向向量。
    • x3 = (x1 - x2)
    • y3 = (y1 - y2)
  • l = sqrt((x3)^2 + (y3)^2)v1
  • 的长度

然后执行以下步骤

  1. 检查用户是否在眼睛中间re - rp内触摸(即l < (re - rp)),他/她是否在p2画出瞳孔并且不再做。< / LI>
  2. 否则以x坐标(re - rp) * x3 / l + x1y坐标(re - rp) * y3 / l + y1
  3. 绘制瞳孔

    如果您有多只眼睛,只需重复其他眼睛的步骤。

    我当然希望你能理解我的意思,如果你不是要求离开。

答案 1 :(得分:1)

我真的没有得到你要求的东西,试着更具体。内圈的中心应该在哪里?

它应该位于外圈中心和用户触摸点之间的中点吗?

在这种情况下,它非常简单。找到线的中间非常简单。如果您有坐标(x1, y1)(x2, y2)。中点的x坐标为x1 + (x2 - x1) / 2,y坐标为y1 + (y2 - y1) / 2

(我忽略了你提到的同心圆,因为它似乎不是你想要的。)