Algorytm rozwijania toroidu i stożka ściętego- opis*

krótko mówiąc po polsku: Tutorial

Moderatorzy: kartonwork, Rafal N.

Awatar użytkownika
Stachu B.
Posty: 105
Rejestracja: śr wrz 22 2004, 13:52
Lokalizacja: Gdańsk

Post autor: Stachu B. » sob paź 01 2005, 11:27

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Mój pomysł jest bardzo podobny do syzyfowego, ale uzwględnia to, projektowana bryła jest wpisana w oryginalną (będącą ofektem obrotu krzywej wokół osi).
Podejrzewam, że małe nieporozumienie między nami wynikło z tego, że Ty, Syzyfie, wymyśliłeś jak rozwinąć kopułę taką, jak na zdjęciu, ja natomiast myślę o bryłach obrotowych (kopuła radaru, kołpak smigła itd.).
0 x

Awatar użytkownika
Syzyf
Posty: 736
Rejestracja: wt lis 30 2004, 10:46

Post autor: Syzyf » sob paź 01 2005, 16:46

Nieźle Stachu :D .
Rzeczywiście nie pomyślałem o tym w ten sposób. To bardzo dobre spostrzeżenie. Jednak w zastosowaniach typu kołpak, czy końcówka torpedy w obu sposobach wyjdzie błąd. To znaczy chodzi mi o taki przypadek jak końcówka torpedy. Jeśli jest rurka i doklejamy do niej końcowy element - taką kopułkę wygenerowaną przez nasz algorytm, to będzie błąd w obwodzie. W mojej metodzie dolna część kopuły będzie miała za dużą średnicę, a w Twojej za małą. Nawet jeśli zrobi się 20 rozcięć.
Ale przyszło mi do głowy, że można by zrobić opcję w której program dopasuje dolną część podstawy do danej średnicy. Wówczas suma dolnych krawędzi musiałaby być taka jak obwód rurki, do której to ma pasować. I program sam by to zrobił.
Dodatkowo można - dla takiego przypadku - wprowadzić opcję, czy poszczególne paski mają być osobno, czy też razem wydrukowane. Bo robiąc kołpak dolna jego część powinna być w całości a dopiero na górze ma być "pióropusz" do zamknięcia bryły.
Teraz też zastanawiam się, czy podstawa musi być wielokątem foremnym.
Na zdjęciu, które wstawiłem kopuła w niższej partii kościoła ma taki kształt. Jest to ośmiobok, ale na przemian jedna ściana jest szeroka a druga wąska :roll:
0 x
Moje modele: archiwum

angus
Posty: 7
Rejestracja: sob lut 12 2005, 16:12
Lokalizacja: Rzeszów

Post autor: angus » sob paź 01 2005, 19:19

hmmm, moja glowa dzisiaj nie jest do myslenia :kwas:

patrzac na te kopulki ktore Syzyf skleiles wyglada calkiem niezle i przy odrobinie pracy przerzucajac pomysl z excela do programu ktory ma sie tym zajac moze to calkiem niezle wygladac :)

trzeba tylko odpowiednio duzo punktow zeby przekroj kopuly nie byl kanciasty, naprosciej (najnudniej) to podawac do programu kilkadziesiat wspolrzednych, trudniej (ale za to szybciej i ladniej) to znalezc odpowiednie wzory na funkcje ktorych wykres bedzie bardzo zblizony do tych kopul (zapewne jesli takowy istnieje to wystarczy zmieniac w nim parametry zeby uzyskac kopuly o roznych obwodach itd)

czekam na dalsze postepy i goraco wierze ze cos dobrego z tego wyjdzie :)

ps. rowniez czekam na opis rozwiniecia stozka scietego ukosnie :chytry:
0 x
pozdrowienia
angus

Awatar użytkownika
Plasser
Posty: 20
Rejestracja: wt wrz 20 2005, 23:59

Post autor: Plasser » sob paź 01 2005, 22:23

angus pisze:trzeba tylko odpowiednio duzo punktow zeby przekroj kopuly nie byl kanciasty, naprosciej (najnudniej) to podawac do programu kilkadziesiat wspolrzednych, trudniej (ale za to szybciej i ladniej) to znalezc odpowiednie wzory na funkcje ktorych wykres bedzie bardzo zblizony do tych kopul
Proszę bardzo! :)

Wzór na krzywą Beziera:

x(t) = xA*(1-t)^3 + 3x1*(1-t)^2 * t + 3x2*(1-t) * t^2 + xB*t^3
y(t) = yA*(1-t)^3 + 3y1*(1-t)^2 * t + 3y2*(1-t) * t^2 + yB*t^3

xA, yA - współrzędne punktu początkowego krzywej,
xB, yB - współrzędne punktu końcowego krzywej,
x1, y1 - współrzędne pierwszego punktu kontrolnego krzywej,
x2, y2 - współrzędne drugiego punktu kontrolnego krzywej,

t - parametr zmieniający się od 0 do 1.

Można teraz wyobrazić sobie program, w którym użytkownik rysuje na ekranie żądaną krzywą, program na podstawie punktów kontrolnych odpowiednio gęsto policzy punkty na krzywej, a dalej, to już wiadomo co i jak... :cool:
angus pisze:rowniez czekam na opis rozwiniecia stozka scietego ukosnie :chytry:
W chwilach radosnego wyczekiwania na konkrety, spróbuję przedstawić szkic takiego algorytmu. :)

Wyobraź sobie "normalny" stożek, w którym dookoła krawedzi podstawy rozmieszczona jest w równych odstępach pewna ilość punktów (np. 30). Połącz te punkty odcinkami (tworzącymi) z wierzchołkiem stożka. Możesz teraz wyobrazić sobie ukośną płaszczyznę przecinającą ten stożek, która jednocześnie jest wielokrotnie przebita "pękiem" tworzących stożka. Wykonaj rozwinięcie tego stożka na płaszczyznę, wraz z wszystkimi trzydziestoma tworzącymi.

Teraz cała filozofia będzie polegała na znalezieniu odległości od wierzchołka stożka, do punktów przebicia płaszczyzny siecznej kolejnymi tworzącymi stożka i odłożeniu tych odłegłości na odpowiednich tworzących w rozwinięciu stożka wyjściowego. Można sobie ułatwić to zadanie tak "obracając" przeciętym stożkiem wokół jego osi pionowej, żeby płaszczyzna sieczna zrzutowała się jako linia prosta (płaszczyzną rzutowania będzie pionowa płaszczyzna, prostopadła do płaszczyzny siecznej). Ułatwić, ale nie rozwiązać - tutaj się trzeba będzie trochę pomęczyć z rachunkami. ;-)

Teraz wystarczy powtórzyć opisaną procedurę dla drugiej płaszczyzny, jeszcze raz odłożyć na rozwinięciu odcinki od wierzchołka do punktów przebicia płaszczyzny siecznej tworzącymi i voila! :cool:
0 x

stillman
Posty: 365
Rejestracja: wt sty 20 2004, 19:36
Lokalizacja: WMG

Post autor: stillman » ndz paź 02 2005, 0:17

http://www.models.gravide.net/stozek.jpg

Tutaj przykład wykreślenia stożka ściętego. Dla utrudnienia stożek został pochylony (wierzchołek znajduje się poza obrysem podstawy). Na rysunku wykreślenie jednej czwartej "ścięcia" jako, że bryła jest symetryczna kreślimy jeden "bok" odbijamy względem osi i łączymy, Metoda jest taka sama.

Legenda.
czarna linia - obrys stożka pełnego w rzutach, z góry, front i boczny.
niebieska linia - płaszczyzna odcięcia
czerwona linia - tworzące stożka pełnego - im więcej poprowadzimy tworzących, tym dokładniejesze będzie odwzorowanie
lini zielona - efekt naszej pracy czyli krzywa określająca odcięcie stożka płaszczyzną.

Jak tylko opracuję graficznie, wrzucę przykład rozwinięcia tego samego stożka.
0 x

Awatar użytkownika
Jeta
Posty: 982
Rejestracja: ndz mar 02 2003, 13:12
Lokalizacja: Gdańsk

Post autor: Jeta » ndz paź 02 2005, 0:46

Jak sobie pomyślę, że każdy hydraulik ma to wszystko w małym palcu to już rozumiem czemu jeden z nich zrobił taką furrorę we Francji.... :haha:
0 x

stillman
Posty: 365
Rejestracja: wt sty 20 2004, 19:36
Lokalizacja: WMG

Post autor: stillman » ndz paź 02 2005, 1:11

co konkretnie hydraulicy mają w palcach???
0 x

Awatar użytkownika
Syzyf
Posty: 736
Rejestracja: wt lis 30 2004, 10:46

Post autor: Syzyf » ndz paź 02 2005, 9:54

Czyli podsumowując dotychczasowy przebieg dyskusji:

- Tomek-angus wykazał zainteresowanie, więc może powstanie kolejna wersja Kresek z toroidem :D . Rzeczywiście wklepywanie kolejnych punktów to masakra. Lepiej byłoby zrobić takie „naturalne” rozwiązanie jak w Siatkach, że krzywą można też narysować na podstawie podkładu – przy użyciu myszki

- Plasser zapodał wzory na krzywe Beziera, którymi można połączyć punkty obwiedni (tu udam się na przestudiowanie tematu). To można wykorzystać do wygładzenia krzywej wyklikanej myszką.
Zapodał też ogólne rozwiązanie problemu rozwinięcia stożka. Ja podobne rozwiązanie mam w książce Lewandowskiego o geometrii wykreślnej. Pozostaje „tylko” :shock: znaleźć wzór na długość tworzącej stożka w zależności od kąta pochylenia płaszczyzny tnącej w funkcji jednego z tych np. 30 punktów przebicia.

- Stillman zapodał jak graficznie rozrysować stożek, jednak nie bardzo wiem co to ma do jego rozwinięcia :lol: . Ale obiecał jego rozrysowanie – czekamy :tuptup:

- StachuB chyba też pracuje nad rozwinięciem stożka :roll:

- ja chyba też popracuję nad rozwinięciem stożka :sciana: (czas: start?!)

- Jeta uległ działaniom marketingowym i uwierzył w naszych hydraulików. Myślę, że o tej słynnej skądinąd fachowości przekona się, gdy mu w domu zacznie kapać z jakiejś rurki :haha:

A tak ogólnie wątek rozwija się ciekawie i może wniesie coś do rozwoju programu Kreski. Oby.
Ciekaw jestem, czy rzeczywiście ktoś poda rozwiązanie problemu rozwinięcia stożka. Oczywiście chodzi o algorytm, który można użyć w programie komputerowym.
Kto pierwszy? Nie pchać się, po kolei ... :wooow:
0 x
Moje modele: archiwum

Awatar użytkownika
Plasser
Posty: 20
Rejestracja: wt wrz 20 2005, 23:59

Post autor: Plasser » ndz paź 02 2005, 12:43

Syzyf pisze:Pozostaje „tylko” :shock: znaleźć wzór na długość tworzącej stożka w zależności od kąta pochylenia płaszczyzny tnącej w funkcji jednego z tych np. 30 punktów przebicia.
Pikuś... :cool:

Obrazek

Dla danej tworzącej l mamy:

x = R*cos(B)

gdzie:
R - promień podstawy stożka,
B - kąt pomiędzy osią x, a promieniem poprowadzonym do punktu położonego na krawędzi podstawy.

Korzystając z podobieństwa trójkątów możemy napisać:

N / (M + x) = (H - z) / z

N / (M + x) = H/z - 1


czyli:

:arrow: z = H(M + x) / (N + M + x)

Mając obliczoną wysokość, na której dana tworząca przebija płaszczynę sieczną, bez problemu policzymy długość odpowiedniego fragmentu tworzącej, posługując się przy tym twierdzeniem Talesa:

l/L = (H - z)/H

czyli:

:arrow: l = L(H - z)/H

I to wszystko. :)

Kolejne odcinki l odkładamy od wierzchołka na rozwinięciu pełnego stożka, uzyskując kolejne punkty linii rozwinięcia stożka ściętego.
0 x

angus
Posty: 7
Rejestracja: sob lut 12 2005, 16:12
Lokalizacja: Rzeszów

Post autor: angus » ndz paź 02 2005, 13:23

Syzyf pisze:Czyli podsumowując dotychczasowy przebieg dyskusji:

- Tomek-angus wykazał zainteresowanie, więc może powstanie kolejna wersja Kresek z toroidem :D . Rzeczywiście wklepywanie kolejnych punktów to masakra. Lepiej byłoby zrobić takie „naturalne” rozwiązanie jak w Siatkach, że krzywą można też narysować na podstawie podkładu – przy użyciu myszki

A tak ogólnie wątek rozwija się ciekawie i może wniesie coś do rozwoju programu Kreski. Oby.
z Kreskami to jest tak ze aby go rozwijac to program potrzebuje gruntownej przebudowy, pisalem go w czasach kiedy programowanie mialo przede mna sporo tajemnic, obecnie te tajemnice dalej sa ale jest ich trochu mniej :)

problem jest wlasciwie blachy i nie taki trudny do rozwiazania, wymaga jednak czasu a tego nigdy za wiele zwlaszcza ze jutro zaczynam ostatni rok studiow :) notabene informatycznych ale nie o tym chcialem

pisalem w innym temacie ze jesli ktos sie znajdzie chetny do rozwoju programu to kod udostepnie, Syzyf juz go ma, jesli ktos chce to prosze o info na maila, zajalbym sie jeszcze Kreskami bo temat mi sie trochu odrodzil w glowie ale ten czas i jego brak :kwas:

moja sugestia jest taka: ktos kto sie dobrze zna na programowaniu bierze sie do roboty, tworzy 'silnik' programu (proponuje w Javie bo bedzie to wtedy bardzo uniwersalny program a dodatkowo technika obiektowa ulatwi jego konserwacje i rozwoj), algorytmy wlasciwie juz sa opisane w temacie, wystarczy je jeszcze bardziej sprecyzowac i gotowe :)

przepraszam ze odbieglem od tematu :kwas:
0 x
pozdrowienia
angus

ODPOWIEDZ