Jak znaleźć długości odcinków łuków po zastosowaniu frezu?

Obiekty i przekształcenia geometryczne, opisane za pomocą układu (nie zawsze prostokątnego) współrzędnych.
maroqs
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 11 sty 2012, o 16:29
Płeć: Mężczyzna
Lokalizacja: Kalisz

Jak znaleźć długości odcinków łuków po zastosowaniu frezu?

Post autor: maroqs »

W związku pewnym makrem pisanym dla Corela trafiłem na ciekawy problem. Otóż mam dwa łuki (krzywe Béziera w układzie 2D czyli na płaszczyźnie) które stykają się w jakimś punkcie S.

W te łuki wpisuję okrąg i potrzebuję znaleźć długości odcinków przyległych do okręgu (na rysunku wartość 5,18). Pomijam krzywe Béziera które tworzą pętle innymi słowy to są zwykłe łuki.

Okręgiem w moim przypadku jest frez który wycina literę. Czy jest jakiś gotowy wzór którego można by użyć? Ostatecznie wystarczyło by znaleźć współrzędne punktów przecięcia okręgu (frezu) z każdym z łuków.

Każdy z łuków mam w pełni opisany czyli znam wszystkie współrzędne potrzebne do narysowania kształtu używając krzywej Béziera (wielomian 3 stopnia). Prosił bym o jakąkolwiek pomoc.

Zadanie oczywiście muszę przerobić do postaci numerycznej (czy raczej do postaci kodu źródłowego), ale to akurat nie problem. Wystarczył by mi wzór analityczny by sobie z tym poradzić.


Powyższy rysunek powinien być bardziej zrozumiały. Chodzi mi o wyprowadzenie wzoru na odcinek DS i ES lub chociaż jakiś punkt zaczepienia bym wiedział jak się za to zabrać. Wzory na wielomiany i na okrąg są znane pytanie tylko jak je powiązać by uzyskać oczekiwany wynik. Ze względu na małe odległości uproszczenie krzywych DS i ES do postaci odcinków też mogło by na początek wystarczyć. Zawsze to jakiś punkt wyjścia. Zresztą błąd długości między odcinkiem a łukiem jest możliwy do pominięcia z uwagi na stosowanie małych frezów.
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Jak znaleźć długości odcinków łuków po zastosowaniu frezu?

Post autor: SlotaWoj »

A czy długość luku zadanego krzywymi Béziera potrafisz wyznaczyć?
maroqs
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 11 sty 2012, o 16:29
Płeć: Mężczyzna
Lokalizacja: Kalisz

Jak znaleźć długości odcinków łuków po zastosowaniu frezu?

Post autor: maroqs »

Długości łuków AS i BS znam. Mam w bazie danych zrzut rysunku z Corela. Mam pełne długości wszystkich krzywych oraz parametry do złożenia krzywej Beziera. To jest o tyle fajne, że dowolny kształt w Corelu można opisać skończoną ilością krzywych lub do takiej postaci sprowadzić. Aktualnie mam narzędzie które umożliwia odtworzenie kształtu składowanego w bazie do postaci oryginalnej.

W Corelu mogę wyznaczyć nawet odległość tnąc odpowiednio odcinek. Niestety z uwagi na sposób składowania i przetwarzania danych na tym etapie mi to nic nie daje. Nie bardzo wiem jak obliczyć odcinek krzywej. To znaczy gdybym znał np. współrzędne punktu D to czy był bym w stanie obliczyć długość DS. Muszę poszperać we wzorach to pewnie coś znajdę. Najważniejszy problem to jak znaleźć współrzędne punktów D i E.

Średnica frezu (okręgu) też jest znana. Znam jeszcze kąt pomiędzy stycznymi łuków zaczepione w punkcie S tyle, że to pewnie nic nie daje. Krzywa Beziera na płaszczyźnie opisana jest jako zestaw 4 punktów np. A i S oraz dwóch końców stycznych wychodzących odpowiednio z punktu A i S. Znany jest również kąt pod jakim taki "rozpinacz" (styczna) leży w stosunku do osi X.
Ostatnio zmieniony 7 sty 2016, o 00:06 przez maroqs, łącznie zmieniany 1 raz.
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Jak znaleźć długości odcinków łuków po zastosowaniu frezu?

Post autor: SlotaWoj »

Nie o to mi chodziło.
Czy masz algorytm wyznaczania długości łuku pomiędzy zadanymi punktami dla dowolnej krzywej Béziera?
maroqs
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 11 sty 2012, o 16:29
Płeć: Mężczyzna
Lokalizacja: Kalisz

Jak znaleźć długości odcinków łuków po zastosowaniu frezu?

Post autor: maroqs »

Znalazłem taki wzór:
\(\displaystyle{ d = \sqrt{(x_1 - x_0)^2 + (y_1 - y_0)^2}}\)
źródło:

Jak to dobrze, że dla 2D wszystko jest łatwiejsze.
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Jak znaleźć długości odcinków łuków po zastosowaniu frezu?

Post autor: SlotaWoj »

Podałeś wzór na długość odcinka pomiędzy punktami \(\displaystyle{ (x_0;y_0)}\) i \(\displaystyle{ (x_1;y_1)}\), a nie na długość łuku.



Trzeba wyznaczyć punkt \(\displaystyle{ A}\), następnie \(\displaystyle{ B}\), w końcu \(\displaystyle{ C}\) i obliczyć długość łuku \(\displaystyle{ AC}\).
Krzywa przerywana, to obrys w kierunku freza i dystansie \(\displaystyle{ r}\) (promień freza).
maroqs
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 11 sty 2012, o 16:29
Płeć: Mężczyzna
Lokalizacja: Kalisz

Jak znaleźć długości odcinków łuków po zastosowaniu frezu?

Post autor: maroqs »

SlotaWoj pisze:Czy masz algorytm wyznaczania długości łuku pomiędzy zadanymi punktami dla dowolnej krzywej Béziera?
Ups. Ale walnąłem gafę... Masz na myśli algorytm De Casteljau? Nie bardzo go rozumiem
Znalazłem algorytm umożliwiający cięcie krzywej beziera jeśli znamy procentową wartość długości odcinka. Taką samą operację mogę zrobić używając narzędzi Corela. Może w drugą stronę wystarczyło by poprzekształcać wzór.

Odnośnie obrysu to nie mam pojęcia jak go zrealizować numerycznie, ale jeszcze poszukam.
ODPOWIEDZ