Witam, napisałem funkcję obliczającą współrzędne środka okręgu opisanego na trójkącie mając dane współrzędne wierzchołków trójkąta ale mam z nią trochę problemów. Otóż dla niektórych wartości podaje błędne dane. Właściwie to korzystałem z gotowca i na moje oko powinno działać bez problemów.
Będę niezmiernie wdzięczny za wskazanie błędu. Korzystam z http://www.pasiecznik.com/GK/Documents/eulerline.pdf
są tam podane wzory, które przepisałem praktycznie do programu.
Problem pojawia sie dla wartosci np. (0,6),(0,0),(8,0).
typedef struct{
double x,y;
}punkt;
punkt oblicz_r(punkt x,punkt y,punkt z){
double a1,a2,b1,b2,c1,c2;
punkt r;
a1=-(y.y-x.y);
b1=x.x-y.x;
c1=-(a1*((x.x+y.x)/2)+b1*((x.y+y.y)/2));
a2=-(z.y-y.y);
b2=y.x-z.x;
c2=-(a2*((y.x+z.x)/2)+b2*((y.y+z.y)/2));
r.x=(-c1*b2+c2*b1)/(a1*b2-a2*b1);
r.y=(-a1*c2+a2*c1)/(a1*b2-a2*b1);
return r;
}