Wpis z mikrobloga

@Kuczer: Tak, sprawdziłem. Jak najbardziej wchodzą w grę radiany. Więc trzeba zdefiniować stałą PI i wtedy to będzie wyglądać tak
for(i=1;i*PI/180 < gamma;i++)
rad = i*PI/180
P4 = P1 + (cos(alpha + rad)r,sin(alpha + rad)*r); // nowy punkt naszego wycinka koła
No i na końcu przydałoby się połączyć jeszcze ten ostatni punkt z tym ostatnim dorysowanym. Nad tym sobie pogłówkuj.
P1(p1,p2) - Środek okręgu

P2(x1,y1) - początkowy

P3(x2,y2) - końcowy

gamma = arccos[(P'1 o P'2)/||P'1||||P'2||].

P'1 o P'2 = (x1-p1)(x2-p1) + (y1-p2)(y2-p2)


@Kuczer: troche głubię się w tych oznaczeniach, czy mógłbyś to ujednolicić, proszę.
@Kuczer:
B - punkt początkowy
C - punkt kncowy
centerArc - srodek

Point2D Pprim1(B.x - centerArc.x, B.y - centerArc.y);
Point2D Pprim2(C.x - centerArc.x, C.y - centerArc.y);

float gamma = acos((Pprim1.x - Pprim2.x)*(Pprim2.x - Pprim1.x) + (Pprim1.y - Pprim2.y)*(Pprim2.y - Pprim1.y)) / ((Pprim1.x * Pprim2.x) + (Pprim1.y * Pprim2.y));
Takie cos to będzie?
@DivideByZero: Jeszcze raz. Aby obliczyć kąt między danymi wektorami musisz dokonać przesunięcia tak aby środek okręgu był w punkcie (0,0). Jak już masz kąt między nimi to dzielisz sobie go na na ileś tam równych części. Następnie po kawałku dodajesz tę części i dorysowujesz odcinek od punktu początkowego do następnego punktu po dodaniu tej części kąta, i tak aż dojdziesz do punktu końcowego.