Znaleziono 3 wyniki

autor: grg12
24 sie 2013, 08:52
Forum: Ogólne Dyskusje na Temat Systemów Sterowania CNC
Temat: Interpretacja poleceń "I" oraz "J"
Odpowiedzi: 6
Odsłony: 2698

Metoda naiwna to policzyć kwadrat odległość od środka koła i porównać z kwadratem promienia (kwadraty żeby uniknąć liczenia pierwiastka). Zakładając że środek koła jest w X0,Y0 a badane położenia Xi,Yi liczysz
dx=Xi-X0;
dy=Yi-Y0;
dd=dx*dx+dy*dy; (Pitagoras się kłania)
porównujesz z R^2 - np.
R2=R*R;
dr=abs(dd-R2);
następnie wybierasz ruch który da najmniejszą wartość dr. Tylko nie próbuj czasem liczyś dr dla wszystkich 8 kierunków bo może się okazać że skieruje cię "do tyłu" :) (z informacji w której ćwiartce koła jesteś i kierunku ruchu powinieneś wydedukować dwa możliwe kierunki ruchu).
Ale naprawdę warto zapoznać się z algorytmem Bresenhama bo pozwala on zrobić potrzebne porównania znacznie mniejszym kosztem. Nie wiem którego modelu Arduino używasz ale jeśli nie jest to jakaś 32 bitowa rakieta to żeby uzyskać sensowną częstotliwość kroków będziesz musiał pisać bardzo oszczędny (w sensie cykli procesora) kod.
autor: grg12
23 sie 2013, 17:14
Forum: Ogólne Dyskusje na Temat Systemów Sterowania CNC
Temat: Interpretacja poleceń "I" oraz "J"
Odpowiedzi: 6
Odsłony: 2698

Liczenie kolejnych punktów z kąta jest banalne - środek koła X0,Y0, promień koła R
X=X0+cos(alpha)*R, Y=Y0+sin(alpha)*R. Problem w tym że albo trzeba liczyć funkcje trygonometryczne (czasochłonne) albo zrobić sobie tablice (zajmują dużo miejsca). Potrzebujesz też funkcji atan do policzenia kąta początkowego, do tego wszystkiego musisz jakoś sprawdzać czy już dotarłeś do końca żeby nie "przestrzelić" - kupa obliczeń/
A algorytmem Bresenhama możesz "rysować" dużo mniejszym kosztem.
Zamiast wyliczać kolejne położenia i łączyć je linią łamaną bierzesz aktualną pozycje i liczysz w która stronę zrobić krok - masz wszystkiego 8 możliwości ruchu ((x++,y),(x++,y++),(x,y++),(x--,y++),(x--,y),(x--,y--),(x,y--) i (x++,y--)) z których 6 eliminujesz na podstawie informacji w której ćwiartce koła jesteś i w którą stronę jedziesz, potem z pozostałych dwóch wybierasz tą która cie utrzyma bliżej obwodu koła, robisz krok, sprawdzasz czy już dotarłeś do końca łuku i zaczynasz od początku.
autor: grg12
23 sie 2013, 14:59
Forum: Ogólne Dyskusje na Temat Systemów Sterowania CNC
Temat: Interpretacja poleceń "I" oraz "J"
Odpowiedzi: 6
Odsłony: 2698

Wróć do „Interpretacja poleceń "I" oraz "J"”