У меня была такая же проблема.Вот небольшой фрагмент кода на C для этого.Как вы можете видеть, есть две возможные точки для центральной точки.Я надеюсь, что это помогает.Кредиты моему скоро Игнасио:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
float x1,y1; //Punto A
float x2,y2; //Punto B
float x3,y3; //Punto medio
float x,y;
float z,t; //los otros posibles puntos
float R; //Distancia
printf("Introduce Ax:\n");
scanf ("%f",&x1);
printf("Introduce Ay:\n");
scanf ("%f",&y1);
printf("Introduce Bx:\n");
scanf ("%f",&x2);
printf("Introduce By:\n");
scanf ("%f",&y2);
printf("Introduce Cx:\n");
scanf ("%f",&x3);
printf("Introduce Cy:\n");
scanf ("%f",&y3);
printf("Introduce la distancia:\n");
scanf ("%f",&R);
x=-((-(x2*x2)+2*x1*x2-(x1*x1))*x3-(x3*y1*y1)+(2*x3*y1*y2)-(x3*y2*y2)+(y2-y1)*sqrt(y2*y2-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1)*R)/(y2*y2-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1);
y=((y2*y2-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1)*y3+(x2-x1)*sqrt(y2*y2-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1)*R)/(y2*y2-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1);
printf ("x=%f\n",x);
printf ("y=%f\n",y);
z=((y2-y1)*sqrt((y2*y2)-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1)*R+x3*y2*y2-2*x3*y1*y2+x3*y1*y1+(x2*x2-2*x1*x2+x1*x1)*x3)/(y2*y2-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1);
t=-((x2-x1)*sqrt(y2*y2-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1)*R+(-(y2*y2)+2*y1*y2-(y1*y1)-(x2*x2)+2*x1*x2-(x1*x1)*y3))/(y2*y2-2*y1*y2+y1*y1+x2*x2-2*x1*x2+x1*x1);
printf ("\nx=%f\n",z);
printf ("y=%f\n",t);
system("pause");
return 0;
}