Coordinates of circle center on a line through a point touching other circle I need to make a part of a program in java that calculates a circle center. It has to be a circle through a given point that touches another circle, and the variable circle center has the possibility to move over a given line.

Here the coordinates of A, B and C and the radius of the circle around A are given. I need to know how to get the coordinates of P and P' when they touch the blue circle around A.
 A: Geometric solution
Locus of points equidistant to a circle and a point (outside the circle) is a hyperbola.
These equidistant points are centers of circles through the given point, and touching the given circle.

In the present case, the given blue circle is denoted $\gamma$ and is centered at $A.$ The hyperbola has foci $A$ and $B$ and passes through the middle point of the segment $BG,$ where $G$ is intersection of $AB$ and $\gamma.$
Since the centers of circles  touching $\gamma$ must lie at $BC,$ they are at the intersection of $BC$ and the hyperbola.
The picture gives two possible configurations assuming that $BC$ has empty  intersection with the circle:

*

*the line cuts each branch of the hyperbola at a single point

*the line cuts one branch of hyperbola at two points

(analytic solution can be added à la commande)
A: A strong hint, but not a complete solution
Let 
$$
\newcommand{\bu} {{\mathbf u}}
\newcommand{\bv} {{\mathbf v}}
\begin{align}
s &= \|B - C\|\\
\bu &= \frac{B - C}{s}
\end{align}
$$
The point $P$ is then $C + t\bu$ for some $t \in \Bbb R$, and I'll follow the picture and consider the case $t < s$ so that we find $P$ instead of $P'$. We'll work out some constraints on $t$. 
The first constraint is that the distance from $P$ to $B$ (namely $s - t$), which is the radius of the circle around $P$, must, when added to $r$, the radius of the blue circle, give the distance from $P$ to $A$. Thus:
$$
(s - t) + r = \| A - (C + t \bu) \|.
$$
Squaring both sides, and letting $\bv = A - C$ and $e = \|A - C \| = \|\bv\|$, we get
\begin{align}
(s - t)^2 + 2r(s-t) + r^2 &= \| (A - C) - t \bu) \|^2\\
(s - t)^2 + 2r(s-t) + r^2 &= [ (A - C) - t \bu) ] \cdot  [ (A - C) - t \bu) ] \\
s^2 - 2st + t^2 + 2rs-2rt + r^2 &=  (A - C)\cdot(A-C) - 2t \bu \cdot  (A - C) + t^2 \bu \cdot bu \\
s^2 - 2st + t^2 + 2rs-2rt + r^2 &=  (A - C)\cdot(A-C) - 2t \bu \cdot  (A - C) + t^2 & \text{, because $\bu$ is a unit vector}\\
s^2 - 2st + t^2 + 2rs-2rt + r^2 &=  e^2 - 2t \bu \cdot  \bv + t^2 & \text{, defn's of $\bv$ and $e$}\\
s^2 - 2st +  2rs-2rt + r^2 &=  e^2 - 2t \bu \cdot  \bv  & \text{algebra}\\
2t \bu \cdot  \bv - 2st -2rt  &=  e^2   -s^2 -2rs - r^2& \text{algebra}\\
t( -2 \bu \cdot  \bv + 2s + 2r)  &=  (s+r)^2 - e^2& \text{algebra}\\
t &=  \frac{(s+r)^2 - e^2}{-2 \bu \cdot  \bv + 2s + 2r }& \text{algebra}\\
\end{align}
...so that gives you the point $P$ (you just compute $P + t\bu$). Now you have to do the same thing, but starting with $(t - s) + r = ...$ to find the point on the other side of $B$. 
Here is (not pretty) Matlab code to implement this, and a plot of the result of 
circles([0 3], [1, 1], [-3, 0], 1)

being run in the Command window. 
function circles(a, b, c, r)
clf; 
a = a(:); b = b(:); c = c(:); 

vv = b - c;
s = sqrt(dot(vv, vv));
u = (b-c)/s;

v = a - c;
e = sqrt(dot(v, v));
numerator = (s+r)^2 - e^2;
denominator = -2 * dot (u, v)+ 2*s + 2*r;
t = numerator/denominator;
P = c + t*u
% draw line from C to B
point(c);
point(b);
plot([c(1) b(1)], [c(2) b(2)], 'k');
circle(a, r);
circle(P, (s-t));
axis equal
figure(gcf);


function point(pt)
hold on;
plot(pt(1), pt(2), 'ro');
hold off;



function circle(ctr, radius)
t = linspace(0, 2*pi, 100); 
x = ctr(1) + radius * cos(t);
y = ctr(2) + radius * sin(t); 
hold on;
plot(x, y); 
point(ctr);
hold off;


The blue circle is the one around point $A$; the red-orange circle is the computed on. The black line segment goes from $C$ to $B$. 
Of course, you still have to work through the case where $t > s$ to find the coordinates of the center $P'$ and the radius of the second circle. 
A: You haven’t mentioned this explicitly, but from the illustration is appears that you’re only interested in externally tangent circles. If the radius of the circle is $r$, then the points you are looking for satisfy $|PA|-|PB|=r$. Set $P = (1-t)B+tC$ and use the distance formula to get a somewhat messy-looking equation in $t$. You can find some useful suggestions for how to manipulate equations involving sums of radicals into a more manageable form in the answers to this question.
