[C] Okrąg opisany na trójkącie

0

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;
}
0

Na pdf'ie jest błąd. Pomylone zostało a z b. Zmień na:
a1=x.x-y.x;
b1=x.y-y.y;
a2=y.x-z.x;
b2=y.y-z.y;
reszta tak jak była.

0

adf88 jesteś wielki! Teraz działa tak jak powinno :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1