DivideByZero
#opengl #programowanie #c++ #python #matematyka #algebra
Jak narysować wycinek koła od punktu początkowego do punktu końcowego znając średnicę oraz punkt centralny koła?

Domiemam iz potrzebuje do tego kąt początkowy i końcowy, ale jak je obliczyć?
1
  • Najlepsze
  • Wszystkie komentarze
DivideByZero
4
F.....k
F.....k
@DivideByZero: Coś zamotałeś nielicho w tym pytaniu. Ogólnie, to pewnie interesują cię funkcje trygonometryczne
2
LubiePiwko
@DivideByZero: Może zmienne biegunowe?
1
K.....r
K.....r
@DivideByZero: Mam nadzieję, że przejdzie ta ustawa...
Załóżmy, że środkiem okręgu jest (0,0), jeśli nie jest to dokonujemy zwykłej translacji.
Masz punkt_początkowy =(x1,x2)
x1= cos(alpha)* r, x2=sin(alpha)*r
Zatem mamy alpha = arccos(x1/r) lub arcsin(x2/r) (oczywiście r jest niezerowe, więc to ma sens)
Tak samo robimy z punktem końcowym. Wybierasz orientacje i rysujesz prostym algorytmem.
1
K.....r
K.....r
@DivideByZero: Dasz sobie radę?
1
K.....r
K.....r
@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.
1
K.....r
K.....r
@DivideByZero: angle*PI/180 to jest zamiana na radiany
1
K.....r
K.....r
@Kuczer: Geometrycznie to jest analogiczna sytuacja do odznaczania równych łuków za pomocą cyrkla.
1
K.....r
K.....r
@DivideByZero: Narysuję Ci to.
1
K.....r
K.....r
@DivideByZero: Ty liczysz te kąty, a one są nieprzydatne.
1
Kontestator
@DivideByZero: Masz równania. Przybliżeniem łuku jest pęk cięciw rysowanych co kąt deltabeta. Gdy delta beta dąży do nieskończoności to masz okrąg. Więc dzielisz beta na n segmentów i potem iterujesz znajdując nowe punkty i rysujesz kolejne cięciwy. U mnie np. dwie.
Aby to zrobić potrzebujesz (do wyboru):
1. punkty O, A, beta
2. punkt O, R, alpha, beta
3. punkty O, A, B
Pamiętaj, że po każdej iteracji alpha
1
Jakr
0
wytrzzeszcz
@DivideByZero: głowa mnie dziś boli, a chciał bym pomóc, możesz narsować na kartce co masz i co chcesz uzyskać?
0
DivideByZero
@wytrzzeszcz:
Punkt początkowy:P1(x1,y1)
Punkt koncowy: P2(x2,x2)
Srednica: r
Punkt srodkowy:
0
wytrzzeszcz
@DivideByZero: ja bym zaatakował wzór (x-x0)^2+(y-y0)^2=r^2 i podzielił go na 4 przypadki
0
sokytsinolop
0
m_bielawski
m_bielawski
@DivideByZero: kąt liczysz z arcus tangensa, like this: arctg((x1 - cx) / (y1 - cy))
0
DivideByZero
@wytrzzeszcz: nie zda to za bardzo egzaminu ;/
@sokytsinolop: no mi brakuje własnie kąta początkowego i koncowego
@Fafnucek: (✌ ゚ ∀ ゚)☞
@m_bielawski: oook, tylko co do czego? hmm...
0