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?
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.)
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 eyerp
: the radius of the pupilp1 = (x1, y1)
: the coordinates of the center of the eyep2 = (x2, y2)
: the coordinates of the users touchv1 = [x3; y3]
: the direction vector betweenp1
andp2
.x3 = (x1 - x2)
y3 = (y1 - y2)
l = sqrt((x3)^2 + (y3)^2)
: the length ofv1
Then do the following steps
- 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 atp2
and do no more. - Otherwise draw the pupil at
x
coordinate(re - rp) * x3 / l + x1
andy
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.