开发者

Find a point between two point

I two concentric circles on the screen and I want the circle on the inside to move around while the user drags their finger around the outside of the larger circle. This means that I have two point, center of开发者_开发百科 the larger circle and the point at which the user touched. How do I calculate where the center of the smaller circle should be?


Ok, if you're drawing a persons eyes it is a completely different matter.

If we start with the following values

  • re: the radius of the eye
  • rp: the radius of the pupil
  • p1 = (x1, y1): the coordinates of the center of the eye
  • p2 = (x2, y2): the coordinates of the users touch
  • v1 = [x3; y3]: the direction vector between p1 and p2.
    • x3 = (x1 - x2)
    • y3 = (y1 - y2)
  • l = sqrt((x3)^2 + (y3)^2): the length of v1

Then do the following steps

  1. Check if the user is touching within re - rp of the middle of the eye (i.e. l < (re - rp)), it he/she is draw the pupil at p2 and do no more.
  2. Otherwise draw the pupil at x coordinate (re - rp) * x3 / l + x1 and y coordinate (re - rp) * y3 / l + y1

If you have more than one eye, just repeat the steps for the other ones.

I certainly hope you understand what I mean by this, if you don't just ask away.


I don't really get what you're asking for, try being more specific. Where is the center of the inner circle supposed to be?

Is it supposed to be at the midpoint between the outer circle's center and the point where the user touched?

In that case it is pretty simple. Finding the middle of the line is pretty simple. If you have the coordinates (x1, y1) and (x2, y2). The x coordinate of the midpoint is x1 + (x2 - x1) / 2 and the y coordinate is y1 + (y2 - y1) / 2.

(I'm ignoring your mention of concentric circles since it didn't seem like that was what you were looking for.)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜