ABC PROJEKTOWANIA   
Regulamin i rejestracja regulamin forum  jak wstawiac grafike, linki itp do wiadomosci grafika i linki w postach

Nauka projektowania przy wykorzystaniu różnych programów, doskonalenie technik i tricków związanych z projektowaniem modeli kartonowych. Zrób To Sam - czyli samodzielne projektowanie dodatkowych elementów. Rozwijanie siatek brył. Zmiana kolorystyki, powiększanie i zmniejszanie.

Uwaga! W tym dziale nie wpisujemy postów: "kartonowych", relacji z budowy (dopuszczalne relacje z procesu projektowania). Informacje o programach wpisujemy wyłącznie w zakresie bezpośrednio związanym z konstruowaniem modeli kartonowych.




 Działy  |  Tematy/Start  |  Nowy temat  |  Przejdź do wątku  |  Szukaj  |  Widok rozszerzony (50 postów/stronę)  |  Zaloguj się   Nowszy wątek  |  Starszy wątek 
 Strona 1 z 3Strony:  1  2  3  ->  => 
21-10-07 12:03  [Tutorial]O tym, jak działa program do rysowania siatek brył
Syzyf 



Na Forum:
Relacje w toku - 4


 - 1

Witajcie :-)
Osoby korzystające z programów takich, jak Siatki czy Kreski mogą przy ich użyciu w prosty sposób rozwinąć na płaszczyznę ostrosłup czy stożek. Wystarczy podać podstawowe wymiary a resztę błyskawicznie zrobi za nas komputer, generując automatycznie rysunek. Użytkownik nie musi wiedzieć jak program to robi, ale może kogoś interesuje właśnie to. Mnie interesuje.
Kiedyś trochę nad tym myślałem, kombinowałem jak napisać taki program w Delphi, ale niestety jestem marnym programistą-amatorem. Dzięki uprzejmości Tomka Terleckiego (angusa), autora programu Kreski mogłem zapoznać się z jego kodem źródłowym (też w Delphi). To utwierdziło mnie w przekonaniu, że "kierunek niuchania" miałem mniej więcej słuszny, ale umiejętności programistyczne duuuużo za cienkie. Jednak przy pomocy książek udało mi się pokonać barierę nieznajomości języka na tyle, aby móc się dogadać z obcym. Czyli mniej więcej ogarnąłem, jak taki program może to robić. Sposobów bowiem może być wiele.

Postanowiłem więc opisać w dużym uproszczeniu ogólną zasadę działania takiego programu. Nie będzie to dokładna kopia algorytmów z Kresek. Raczej przepuszczę to przez swoje zwoje i postaram się wypichcić opis lekkostrawny, zrozumiały dla wszystkich.
Programiści mogą się czasami poczuć nieswojo, ale zakładam że odbiorca o programowaniu nie wie prawie nic. Kolejne odcinki będę zamieszczał, gdy czas pozwoli.
Komentarze wskazane.

Dzisiaj elementarz oraz pierwsze rozwinięcie.

Jak komputer widzi rysunek
Każdy w szkole spotkał się z układem współrzędnych XY. Na takim układzie można łatwo zaznaczyć kropką punkt P, znając jego współrzędne x i y. Jednak w takim układzie liczby x i y mogą być dodatnie albo ujemne oraz mieć wartości ułamkowe, np. x=3,26 a y=-5,67.
Dla przypomnienia ;-)


Programy posługują się podobną zasadą, z tym że współrzędne mogą przybierać jedynie wartości całkowite i dodatnie. Operują więc tylko na jednej ćwiartce tego układu, gdzie x i y są dodatnie.
Ćwiartka taka ma również takie ograniczenie, że nie jest nieskończenie wielka - programista musi określić z góry jej wymiary.


Wymiary te muszą być liczbami całkowitymi a "jednostką długości" jest tzw. piksel. Jaka jest długość piksela? Nie ma jej z góry narzuconej. Pisząc program sami decydujemy, jakie są jego wymiary. Na przykład ustalamy sobie, że 1 piksel będzie miał "długość" 0,1 mm. Jeśli więc na rysunku ustawimy obok siebie 100 pikseli, to będzie to odcinek o długości 10 mm. "Rysunek" dla komputera jest więc tabelką o wyznaczonej z góry liczbie kolumn i wierszy, gdzie jedna komórka to piksel.


Jak komputer rysuje i dlaczego trzeba znać aż dwa polecenia
Rysowanie odbywa się w bardzo prosty sposób: podajemy programowi współrzędne piksela i każemy mu przybrać jakiś kolor (pikselowi). Dla uproszczenia przyjmijmy, że na wstępie cały obszar przeznaczony na rysunek ma piksele białe a rysowanie następuje poprzez zmianę koloru piksela na kolor czarny. To dość trudne, bo do poprawnego działania takiego programu trzeba znać aż 2 polecenia!
Brzmią one tak:
1. „Zaczernij piksel o współrzędnych x, y” - nazwijmy je roboczo Punkt(x,y). Wydanie polecenia Punkt(23, 67) zaczerni piksel o takich współrzędnych
2. „Narysuj linię do piksela x, y” - LiniaDo(x,y). Początkiem jest ostatni zaczerniony piksel albo koniec ostatniej linii.

Działanie programu przypomina sterowanie ręką trzymającą ołówek, poruszającą się nad kartką papieru: przesuń się tu czy tam i dziabnij ołówkiem w punkt. Albo: dziabnij, przyciśnij i rysuj do innego miejsca.

I to jest cała potrzebna wiedza do tego, żeby rysować po wyznaczonym obszarze.
Pierwszy program
Oto przykładowy program w roboczym języku i jego wykonanie (komendy wykonywane są po kolei)


Zatem chcąc np. narysować prostą choinkę, należy znać współrzędne potrzebnych punktów i pisać program z głową:


Program pisany bez głowy, podczas tłumaczeniu dziecku skąd się biorą dzieci itp. da taki efekt:


W rzeczywistości istnieje wiele poleceń ułatwiających życie programiście, rysujących od razu gotowe prostokąty czy kółka, ale o tych wyrafinowanych narzędziach nie będę pisał.

Podsumowując: aby narysować cokolwiek należy znać współrzędne pikseli i z sensem je zaczernić i kolejno połączyć. Kluczową sprawą jest więc sposób wyznaczania współrzędnych punktów oraz kolejności wykonywania połączeń między nimi.
A do tego trzeba mieć łeb ;-) .

Rozwijamy pierwszą bryłę
Pora więc na pierwszą bryłę: program ma narysować rozwinięcie walca o średnicy 32 mm i wysokości 54 mm.
Rozwinięcie walca jest prostokątem: jeden wymiar to wysokość a drugi to obwód podstawy:
-wysokość= 54 mm
-obwód=PI*32mm=100,48 mm
Zadanie to sprowadza się więc do narysowania prostokąta.
Program przelicza te wymiary na pikselową długość (1 piksel=0,1 mm). Daje to wymiary 1005x540 pikseli. Jak widać dokładność rysowania zależy od ustalonej liczby pikseli na 1 mm. Im więcej, tym rysunek bardziej dokładny.
Program jest zatem dziecinnie prosty:


Gotowy element drukujemy i sklejamy nie zapominając pochwalić się swoim dokonaniem na Forum:


W następnym odcinku spróbuję opisać rozwijanie siatki graniastosłupa foremnego o 5 bokach. Albo więcej ;-)
Plus obie podstawy rzecz jasna :-))
Wszelkie uwagi, w tym również o wypisywaniu herezji - wskazane :razz: .

A teraz zapraszam na wybory...



Post zmieniony (21-10-07 13:36)

 
22-10-07 18:45  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Syzyf 



Na Forum:
Relacje w toku - 4


 - 1

Doszedłem do wniosku, że przed opisem rozwinięcia graniastosłupa trzeba jeszcze liznąć nieco teorii. Będą to proste rzeczy, ale niezbędne do zrozumienia dalszych etapów.

Wrócę więc jeszcze do programu rozwijania walca. Podany poprzednio przykład ma ten feler, że rozwija tylko jeden walec o konkretnych wymiarach. Może niektórzy chcieliby rozwinąć swój własny ;-)
Program musi więc być uniwersalny i umożliwić zrobienie tego dla różnych wysokości i średnic.
Zmodyfikujemy go tak, aby był w stanie rozwinąć wszystko :D .

Użytkownik wprowadza do programu dane o wysokości i średnicy. Ponieważ nie wiemy jakie to będą liczby, muszą one zostać zapamiętane. Jak program je zapamiętuje?
Służą do tego celu odpowiednie miejsca w pamięci zwane zmiennymi.
Tutaj garść naprawdę łatwej do ogarnięcia teorii, raptem jeden ekran :

Wiemy już, co to są zmienne, czas je zastosować.
Użytkownik wprowadził swoje dane (pal licho jak) i program zapamiętał je w zmiennych: Wysokosc oraz Srednica (gdzieś tam się pałętają po pamięci).
Przeliczmy je na piksele. Ponieważ rozdzielczość wynosi 1 piksel na 0,1 mm zapamiętamy ją też jako zmienną:
Rozdz:=0,1
Zmienne "spikselowane" oznaczymy jako WysP oraz SzerP , co by nie pisać zbyt długaśnych nazw (od razu obliczymy obwód walca, przyjmując że program zna wielkość "Pi"):
WysP:=Wysokosc/Rozdz
SzerP:=Pi*Srednica/Rozdz


Ważną rzeczą w programie są komentarze, które są ignorowane przez komputer ale programiście ułatwiają zapamiętanie co dany fragment robi. Przed komentarzem stawiamy znak //.
Ustalamy, że rysowanie zaczniemy tym razem od punktu w lewym dolnym rogu obszaru rysunku.
Oto wartości początkowe:
Xp:=50 // Xp - współrzędna x początkowa
Yp:=50 // Yp - współrzędna y początkowa


Ustaliliśmy "na stałe" wartości trzech zmiennych: Rozdz, Xp, Yp. Ma to ogromną zaletę: jeśli zajdzie potrzeba zmiany rozdzielczości albo punktu początkowego, to wystarczy to zmienić tylko w tym miejscu programu. Cała reszta będzie operowała na zmiennych wyrażonych przez nazwę. Można pozwolić też użytkownikowi na ustalenie swoich wartości w opcjach programu.
Do narysowania uniwersalnego prostokąta potrzebujemy jedynie znajomości 4 punktów. Oto one:


A oto nasz cały uniwersalny program, który narysuje rozwinięcie każdego walca (tym razem już bez numeracji linii):


Mam nadzieję, że nie bolało. Na dzisiaj wystarczy, bo co za dużo...
W następnym odcinku jeszcze się trochę zapętlę, ale potem już granistosłup, na który wszyscy czekają :)))



Post zmieniony (22-10-07 21:38)

 
23-10-07 11:45  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Syzyf 



Na Forum:
Relacje w toku - 4


 - 1

Dzisiaj będzie kilka słów o pętlach.
Nie chodzi tutaj o sposób, jak zgrabnie i szybko zawiązać pętlę by powiesić się, gdy program nie działa.
Garść teorii nie przekracza jak zwykle objętości jednego ekranu - po przeczytaniu kilku, może rzeczywiście trzeba by rozejrzeć się za sznurkiem ;-)



Uzbrojeni w pętlę możemy przystąpić do jej wykorzystania.
Napiszmy program, który wykona rysunek podobny to testowego z nowej wersji programu Kreski.NET:


U mnie będzie to jedna pozioma linia o długości 100 mm (1000 pikseli) a na niej 11 pionowych kresek o długości 20 mm (200 pikseli) w odstępach co 10 mm(100 pikseli).
Rysunek pomocniczy:


Oraz gotowy program


Jako sprawdzenie nabytej wiedzy :) proponuję przeanalizować, co narysuje następujący program:

Xp:=50
Yp:=50
Powtorz od i:=0 do 10
{
Punkt(Xp+i*30, Yp)
LiniaDo(Xp+70+i*30,Yp+200)
LiniaDo(Xp+140+i*30,Yp)
}

Odpowiedź w kolejnym odcinku, czy ok. niedzieli.
Nie samym programowaniem człowiek żyje.
Czasami trzeba też coś skleić :D



Post zmieniony (23-10-07 14:26)

 
26-10-07 16:47  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Dorsz Odyniec 

 

podziwiam determinację, cierpliwość i zasób wiedzy
Ale trudno wymagać, aby modelarz stał się modelarzem -programistą. (moje zdanie)

Jak to mówią - człowiek klika i oczekuje efektów swojego kliknięcia ... (:-)
--

Autoryzowany Instruktor Rhinoceros w Polsce

Post zmieniony (26-10-07 17:08)

 
27-10-07 08:34  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Syzyf 



Na Forum:
Relacje w toku - 4


 - 1

Dzięki Dorszu za pierwszy komentarz, za którym - mam nadzieję - pójdą kolejne.
Czuję potrzebę małego wytłumaczenia celu tego wątku. Na telewizyjnym kanale Discovery emitowane są odcinki programu "Jak to jest zrobione?". Można się tam dowiedzieć jak powstaje np. żarówka, łańcuch do roweru, ponton czy gumka do wymazywania ołówka. Mnie ten program interesuje; jakoś tak przyjemniej używa mi się śrubokrętu, chodzi po dywanie albo jedzie samochodem, gdy wiem jak został zrobiony.
Ten temat ma być właśnie odpowiednikiem takiego programu telewizyjnego. Nie namawiam nikogo do zostania programistą, lecz zapraszam za kulisy i do zobaczenia jak powstał taki program jak Kreski (i być może także Siatki, choć tego nie wiem).
Samo pisanie służy także mi.
Mój wujek dał mi kedyś dobrą radę, jak nauczyć się angielskiego: weź książkę w tym języku na temat, który cię interesuje i ją przeczytaj.
Do tej pory z tej rady nie skorzystałem :((( dopiero teraz: uczę się języka programowania ale w temacie, który mnie interesuje.
Z drugiej strony pisanie takiego tekstu znakomicie porządkuje moją skromną wiedzę a także zmusza do wyrażania swoich myśli w sposób skrótowy. Na przykład każdy z tych "wykładów" pierwotnie był ok. 3 razy dłuższy niż końcowy. Strasznie trudno cenzuruje się samego siebie :)))
Zapraszam więc na kolejne odcinki, które napiszę niebawem...

 
28-10-07 08:54  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Syzyf 



Na Forum:
Relacje w toku - 4


 - 1

Poprawną odpowiedź na pytanie zadane ostatnio wyrysuje komputer, a dokładniej arkusz Excel'a.
Jak widać są to odwrócone literki V, przesuwane w pętli co 30 pikseli:


Rozkładamy graniastosłup foremny, czyli o takiej samej szerokości ścian bocznych.
Ściany Boczne


Wielkości niezbędne do wykonania rozwinięcia takiej bryły są trzy: wysokość, szerokość ściany bocznej oraz liczba boków:



Zacznijmy od prostszego, czyli rozwinięcia ścian bocznych. Składa się ono z szeregu prostokątów o wymiarach zależnych od wysokości i szerokości ściany.
Można jednak nie rysować całych prostokątów, lecz fragmenty w kształcie litery C:



Oczywiście do narysowania tych powtarzających się fragmentów wykorzystamy w programie pętlę. Liczba powtórzeń będzie zależna od wczytanej liczby boków LBok.
Oto kawałek programu:



Ściany boczne mamy załatwione: łatwizna :)

Podstawa graniastosłupa

Podstawy są dwie takie same i są to wieloboki foremne, czyli każdy bok ma taką samą szerokość.
Algorytm musi być uniwersalny i mieć możliwość narysowania wieloboku o dowolnej liczbie ścian, podanych przez użytkownika.
Dokładny przepis na wielobok będzie w następnym odcinku, natomiast na razie zrobiłem arkusz kalkulacyjny, który wykreśla wielobok o podanej szerokości ściany oraz zadanej liczbie boków.
Należy do niego wpisać liczbę boków i szerokość ściany. Pozostałe wielkości, promień, kąt zostaną wyjaśnione w następnym odcinku
Zrzut ekranu:



Arkusz można sobie ściągnąć (kliknąć poniższy link, potem "Click here to start download" a następnie "Zapisz") i poeksperymentować, wpisując swoje dane:
http://www.mediafire.com/?552cyt4dx2x

Arkusz ma komórki zabezpieczone przed modyfikacją, ale można to odblokować klikając Narzędzia>Nie chroń arkusza
c.d.n. :-)

 
30-10-07 18:22  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Dorsz Odyniec 

 

Widać chyba, jesteś skazany na moje komentarze,,,

Ponownie chylę czoła nad ogromem czasu i oryginalnemu pomysłowi, który towarzyszy temu wątkowi i autorowi od początku. Ale nie zmieniam zdania, nawet przy porównaniu do serii Discovery "Jak to jest zrobione"... według mnie przerost treści nad formą (oryginalnie, ale tak uważam)

Może lepiej jednak zająć się Rhino i zrobić na takim poziomie lekcję jak projektowania w nim modelu, zapewniam Cię, będziesz miał setki komentarzy i oglądalność wątku taką, że samemu do niego będzie Ci trudno się dostać... (:-)

Pozdrawiam,

--

Autoryzowany Instruktor Rhinoceros w Polsce

Post zmieniony (31-10-07 08:01)

 
02-11-07 15:53  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Syzyf 



Na Forum:
Relacje w toku - 4


 - 1

Napisanie tutoriala do Rhino może być dla mnie trochę kłopotliwe, bo nie znam tego programu wcale ;-)
Bicie rekordów oglądalności pozostawiam TVN24 - obecna liczba odsłon całkowicie zaspokaja moją próżność :)))
Przerost formy nad treścią być może wystąpił, jednak jest to na razie przystawka przed właściwym obiadkiem. Temat jest pisany z myślą o nieprogramistach, dlatego trochę rzeczy trzeba było wyjaśnić.
Kolejne posty będą już bardziej konkretne i współczynnik nasycenia treścią wzrośnie.
Lecimy więc dalej.


Ciekawe, że łatwiejsza część programu, rysująca w pętli ściany boczne liczyła 4 wiersze poleceń. Część trudniejsza, rysująca wielobok liczy zaś ... tylko jeden wiersz.

Bardziej mozolna natomiast jest droga prowadząca do tej jednej linijki. Opiszę to dość szczegółowo, ponieważ algorytm ten będzie powtarzał się cały czas (a końca wątku nie widać ;-) ). Będzie wykorzystany do rozwijania ostrosłupa, stożka, oraz walców, stożków, graniastosłupów ściętych prosto albo ukośnie. Wszystko opiera się na tej jednej zasadzie.

Przy rysowaniu wieloboku foremnego wykorzystamy 2 fakty:
1. Można go wpisać w okrąg, tzn. każdy wierzchołek leży na jego obwodzie. Do wykreślenia potrzebny będzie promień takiego okręgu.
2. Prowadząc linie od środka okręgu do wierzchołków otrzymuje się trójkąty równoboczne. Trójkątów tych jest tyle ile, boków ma graniastosłup a suma kątów ich wierzchołków wynosi 360 stopni
Można więc łatwo wyznaczyć kąt Beta wierzchołka tych trójkątów oraz znaleźć promień okręgu R:


Narysowanie dowolnego wieloboku jest więc proste: obieramy na okręgu jakiś punkt początkowy P1 i obracamy go - niczym wskazówki zegara - o wielokrotności kąta Beta:
Przy pomocy cyrkla i kątomierza można łatwo narysować na kartce dowolny wielobok foremny. Trzeba tylko obliczyć wcześniej promień i kąt wierzchołka trójkąta.


Program jednak nie dysponuje cyrklem i trzeba to przerobić na współrzędne punktów. Jest to chyba łatwiejsze niż znalezienie w moim domu kątomierza, a robi to się tak:


Punkty “ślizgają” się po okręgu i łatwo wyznaczyć ich współrzędne wstawiając do wzorów wielokrotności kąta Beta:


Wiadomo już, jak narysować wielobok o środku w początku układu współrzędnych. Program może jednak operować tylko na współrzędnych dodatnich, trzeba więc przesunąć figurę do I ćwiartki:


Taki elaborat, żeby wyjaśnić sens jednej linijki programu :))


Niebawem zmierzę się z ostrosłupem.

 
02-11-07 18:32  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Dorsz Odyniec 

 

Teraz to podziwiam już nie tylko Twoja wiedzę, ale również konsekwencję.
Chyba jesteś już za dobrym programistą (wtedy traci się wyczucie) , skoro uważasz, że to co Tworzysz i proponujesz, jest dla tych, którzy nie mają za bardzo nic wspólnego z programowaniem, "tekstem dla nieprogramistów"
Jasne - rób to co zamierzałeś, skoro uważasz, że ktoś na tym skorzysta.

A Rhino , to nie TVN24 - sam się prosisz.... Rhino to nie TVN 24.Rhino to po prostu program, którego używają dziś projektanci, masowo zresztą

Skoro chcesz znów wynajdować koło, nie ma problemu,

Ja jednak polecam Ci zapoznanie się np. z Rhino, jak zobaczysz co ten program potrafi, to sam stwierdzisz, że to co piszesz, to są programy na ZX Spectrum (nie wiem, czy pamiętasz takie maszyny), w porównaniu, co "sam" potrafi zdcedować nawet przy wyborze danej formy geometrii (chodzi o dobór odpowiedniej powierzchni) Rhino...

jest 2007... jakby ktoś nie zauważył, koniec.

Z całym szacunkiem,

Dorsz

PS. Wszystko co do tej pory napisałeś, to nawet nie pojedyncze kliknięcia w Rhino, można powiedzieć... to sama idea wybrania danej opcji w rzeczy samej...
A ja może jestem niecodzienny w swojej opinii, ale nie matematyk, informatyk, technik. ale znakomity badacz, militarny "szajbus", który ślęczy nad zdjęciami i planami rok, jest w stanie zrobić, zaprojektować dobry model ....
Ja uważam, że narzędzia muszą być na poziomie (umiejętności informatycznych) tych "maniaków" (klikasz i masz). Inaczej to już połączenie już dwóch pasji - informatyki i modelarstwa, a to nie da nigdy takiego rezultatu.
Oczywiście, to tylko moja opinia.

--

Autoryzowany Instruktor Rhinoceros w Polsce

Post zmieniony (02-11-07 19:15)

 
03-11-07 12:59  Odp: [Tutorial]O tym, jak działa program do rysowania siatek brył
Dorsz Odyniec 

 

Skoro nikt inny nie uczestniczy w tej dyskusji, to można odnieść wrażenie, że napadłem na Syzyfa... Zapewniam, że nie taki był zamiar, miałem raczej nadzieję ożywienie dyskusji,,,
Jeśli Syzyf poczuł się urażony (a może, bo przeczytałem wszystko) - z pokorą przepraszam,

--
Autoryzowany Instruktor Rhinoceros w Polsce

 Tematy/Start  |  Wyświetlaj drzewo   Nowszy wątek  |  Starszy wątek 
 Strona 1 z 3Strony:  1  2  3  ->  => 

 Działy  |  Chcesz sie zalogowac? Zarejestruj się 
 Logowanie
Wpisz Login:
Wpisz Hasło:
Pamiętaj:
   
 Zapomniałeś swoje hasło?
Wpisz swój adres e-mail lub login, a nowe hasło zostanie wysłane na adres e-mail zapisany w Twoim profilu.


© konradus 2001-2024