Showing posts with label Polski. Show all posts
Showing posts with label Polski. Show all posts

Tuesday, July 12, 2011

Zaczynamy

THIS POST IN ENGLISH


Jak było widać w poprzednim poście, algorytm do automatycznego rozwijania w Sketchupie działa.
Ale ponieważ programowanie nie jest główną ideą tego bloga, postanowiłem zacząć coś bardziej praktycznego.
Na pierwszy ogień poszedł Su-17M. Dlaczego akurat ten samolot? Hmmm...
Wydaje mi się, że zadecydowała o tym w miarę prosta bryła, kadłub , stateczniki...
Miejscem, które przysporzy na pewno problemów będą skrzydła.
Intensywnie myślę nad mechanizmem składania skrzydeł. Może uda się zsynchronizować obie strony.




Pierwszy etap projektowania , to zgromadzenie dokumentacji. Zestawienie widoków (góra-dół-przód-strona) i odpowiednie ich skalowanie w dowolnym programie, to kolejny krok.
Aby ułatwić sobie zadanie, usunąłem tło w każdym z rzutów i zapisałem poszczególne pliki jako PNG, co pozwoliło zachować przeźroczystość. Pozostało wstawić wszystko do Sketchupa.

Kolejnym krokiem było obrysowanie kształtu kadłuba w widokach z góry i z boku. Wybrałem taki sposób modelowania, ponieważ poszczególne przekroje kadłuba, dostępne w tym zestawie planów średnio pasowały do obrysów. Można co prawda wrysować poszczególne wręgi i potem skalować je tak aby pokrywały się z widokami. Ale postanowiłem, że podejście w drugą stronę w tym wypadku też jest możliwe, bo przekroje kadłuba są w przybliżeniu okrągłe - eliptyczne.
Sam obrys kadłuba wykonałem przy pomocy BZ CURVES - rozszerzenia Sketchupa które pozwala kreślić sp lajny i inne krzywe.
Wcześniej wrysowane obrysy wyciągnąłem  i wykonałem przecięcie (intersection). Następnie wykonałem kilka przecięć pionowymi płaszczyznami w miejscach w których zaplanowałem wręgi i otrzymałem szereg prostokątów.
na poszczególnych prostokątach elips. W tym celu posłużyłem się kolejnym rozszerzeniem do Sketchupa: TOOLS ON SURFACES.
Potem pozostawiłem jedynie wyrysowane elipsy.

Kadłub rozpiąłem na zdefiniowanych przekrojach przy użyciu narzędzia CURVILOFT.
Można również spróbować innego skryptu: SKIN.
Tutaj widać efekt wraz z już wykonanymi skrzydłami.
O skrzydłach w kolejnej odsłonie.

Tuesday, July 5, 2011

Żegnaj Excelu , witaj Ruby

SEE THIS POST IN ENGLISH
No tak... nadhodzi taka chwila ,że trzeba pochylic głowę z pokorą i powiedzieć: Pomyliłem się.

Pomyliłem się, myśląc że Excel, albo inny arkusz kalkulacyjny będzie najbardziej uniwersalnym narzędziem do rozwijania...

Pomyliłem się , myśląc że kolejny język programowania którego trzeba się nauczyć, to przesada...

Prawdopodobnie mylę się i będę się mylił jeszcze w wielu sprawach, ale praca dalej idzie do przodu, tym razem jednak wyłącznie w Sketchupie i RUBY :

CDN.

Sunday, May 22, 2011

Wideo!!!Jak to działa

SEE THIS POST IN ENGLISH
Witam ponownie.
Od ostatniego wpisu minęło trochę czasu, ale jestem ponownie on-line.
Dzisiaj mały podgląd jak działa to, co do tej pory udało się napisać.
Bez dźwięku – nie podoba mi sie mój głos :D
Pierwsze wideo to tylko Sketchup.
Mamy dwie krzywe definiujące narysowane przy pomocy pluginu BezierCurves.
Obie krzywe maja taką samą dokładność (50 odcinków).
Trzecia krzywa, zamknięta to nasza definicja kamuflażu..
Pierwszym krokiem jest rozpięcie powierzchni na krzywych definiujących. Wykorzystamy do tego kolejny plugin - skin.
Ustawienia, jakich używam można zobaczyć na filmie.
Następnie wyciągamy naszą definicję kamuflażu aż przeniknie całkowicie wcześniej utworzoną powierzchnie.
Wykonujemy przecięcie elementów i usuwamy niepotrzebne już części. Na naszej powierzchni mamy zrzutowane linie kamuflażu.
Kolejnym krokiem jest wyeksportowanie punktów. Czynność tą wykonujemy 3 razy, dla 2 krzywych definiujących oraz dla punktów na powierzchni.



Drugie wideo to pierwsza część obliczeń w Excelu.
Importujemy punkty krzywych. W drugim arkuszu Excela mamy podgląd krzywych z ponumerowanymi punktami. Zasada, która została przyjęta do obliczeń mówi, że krzywa powinna przebiegać przeciwnie do ruchu wskazówek zegara. Nasze krzywe powinny zaczynać się w dolnej części, więc punkty nr 51 powinny być punktami nr 1 a punkty 50 punktami nr 2 . Na podglądzie widać również, że w górnej części krzywej nr 2 ( niebieskiej ) występuje małe zamieszanie przy punktach 1,2 i 3 ( kolejność punktów).
Wracamy do pierwszej zakładki i wpisujemy przy punktach 50 i 51 odpowiednio 1 i 2 ( Patrz pierwsza kolumna, nie numer wiersza!) Sortujemy punkty pierwszej krzywej i patrzymy na podgląd 3D. Sortujemy drugą krzywą i sprawdzamy czy krzywe mają odpowiedni układ.
Nasza powierzchnia jest już rozwinięta.
Przechodzimy teraz do trzeciego arkusza, aby rozwinąć również linie kamuflażu.
(Ignorujemy komunikat o błędzie – pojawia się, ponieważ nie ma dostępnych żadnych danych..)
Importujemy punkty I uruchamiamy makro, które rozwinie punkty na powierzchni.
Rozwinięcie 300 punktów na powierzchni zdefiniowanej przy pomocy 2x 50 odcinków zajęło niecałą minutę. Czas ten jest oczywiście zależny od ilości punktów i definicji krzywych.
Po zakończonych obliczeniach eksportujemy rozwinięte punkty do pliku CSV ( wartości rozdzielone przecinkami).


Co można zrobić z tym plikiem, pokażę w kolejnej odsłonie.

Friday, April 15, 2011

Postęp w pracy

SEE THIS POST IN ENGLISH

Brak czasu na blogowanie , ale praca przy arkuszu idzie powoli do przodu.

Zakładka 1 - dane krzywych definiujących.








Zakładka 1 - Podgląd rozwinięcia, podgląd krzywych definiujących w rzucie i w aksonometrii.
Zakładka 2 - Dokładny podgląd krzywych . Będzie  wykorzystywany przy odpowiednim ustwieniu orientacji elementu . 
 






Zakładka 3 - Dane wejściowe punktów na powierzchni i ich rozwinięcie .








Zakładka 3 - Podgląd punktów na powierzchni w aksonometrii .
 Zakładka 3 - Podgląd punktów na powierzchni w rozwinięciu.
Teoretycznie współrzędne tych punktów można juz wyeksportować do Sketchupa. i na ich podstawie wykreślić element wraz z liniami podziału . W tym momencie nie ma jeszcze pluginu do Sketchup'a, który automatycznie dopasuje krzywą do zbioru punktów, więc trzeba by to zrobić punkt po punkcie.
Więc aktualnie prace przy arkuszu sprowadzają się do obejścia tego problemu.

Friday, April 1, 2011

Automatyka excela


Zastosujmy teraz to co do tej pory wiemy , w praktyce:
Przykład 1
Oto nasz przykład . Jest prosty , ale pozwoli nam to na łatwe kontrolowanie obliczeń .
Odległości między punktami
Z współrzędnych punktów obliczamy odległości między danymi wierzchołkami.
r1 , r2 , r3 oraz r4 dla pierwszej pary punktów
Definiujemy wartości r1, r2, r3 i r4 dla pierwszej pary punktów .
>
r1 , r2 , r3 oraz r4 dla drugiej pary punktów
Robimy to samo dla drugiej pary punktów .
Rozwinięta powierzchnia z przykładu 1
Rozwijając powierzchnie , powinniśmy otrzymać punkty o takich współrzędnych .
Formuły
Wszystkie obliczenia wykonujemy w arkuszu kalkulacyjnym ( Excel , OpenOffice.org Calc lub innym ).
Obok podstawowy arkusz.
Pokazane na nim wszystkie formuły , a poniżej ich wytłumaczenie  .
Wypełnione są tylko pierwsze wiersze , pozostałe można skopiować.







Komórka A3 : Numer punktu
Komórki B3-D3 : Współrzędne punktów na krzywej A
Komórki E3-G3: Współrzędne punktów na krzywej B
Komórka H3 : Odległość między A1 i A2 [r1]
Komórka I3 : Odległość między A2 i B1 [r2]
Komórka J3 : Odległość między A1 i B1 [D]
Komórka K3 : Różnica pomiędzy współrzędnymi x punktów A'1 i B'1 [Dx]
Komórka L3 : Różnica pomiędzy współrzędnymi y punktów  A'1 i B'1 [Dy]
Komórka M3 : Wartość a wyliczona przy pomocy r1, r2 i D [a]
Komórka N3 : Wartość h wyliczona przy pomocy r1 i a [h]
Komórka O3 : Odległość między A2 i B2 [r3]
Komórka P3 : Odległość między B1 i B2 [r4]
Komórka Q3 : Odległość między A2 i B1 [D]
Komórka R3 : Różnica pomiędzy współrzędnymi x punktów A'2 i B'1 [Dx]
Komórka S3 : Różnica pomiędzy współrzędnymi y punktów  A'2 i B'1 [Dy]
Komórka T3 : Wartość a wyliczona przy pomocy r3, r4 and D [a]
Komórka U3 : Wartość h wyliczona przy pomocy r3 i a [h]
Komórki  V3-X3 : Punkt początkowy rozwiniętej powierzchni (x, y, z) [point A'1]
Komórki Y3-AA3 : Punkt B'1 , współrzędna x = współrzędna x punktu A'1 plus wartość D z komórki J3
                         Współrzędne y i z są takie same jak punktu A'1
Komórki V4-X4 : Współrzędne x i y punktu A'2 , wyliczone przy pomocy r1 , r2 , h , a , Dx , Dy i D.
                       Współrzędna z taka sama jak punktu A'1
Komórki Y4-AA4 : Współrzędne x i y punktu B'2 , wyliczone przy pomocy r3 , r4 , h , a , Dx , Dy i D.
                       Współrzędna z taka sama jak punktu B'1

Obliczony przykład 1
Nasz pierwszy przykład obliczony przy pomocy arkusza .
Arkusz można oczywiście wzbogacić o inne funkcje , np podgląd rozwiniętej powierzchni .
Przykład 2 . 
Krzywe, Punkty, trójkąty, Powierzchnia i jej rozwinięcie
Przykład 2 to trochę bardziej skomplikowana powierzchnia . Krzywe podstawowe to dwa splajny , widzimy następnie punkty na danych krzywych , rozpięte na tych punktach trójkąty, oraz nasza powierzchnie rozpiętą na krzywych . Ostatnimi figurami są rozwinięcia naszej powierzchni.
Współrzędne punktów zostały zaimportowane do naszego arkusza, a następnie na podstawie przeliczonych współrzędnych narysowano rozwinięcie.
Obliczony przykład 2
C.D.N.

Monday, March 28, 2011

Zalety używania Sketchup'a

SEE THIS POST IN ENGLISH

Dlaczego Sketchup ?
Zdecydowanie największą zaletą jest to , że to darmowy program.
Posiada również wiele różnorodnych rozszerzeń , w postaci skryptów RUBY .
Kilka z nich omówie później , gdy przyjdzie czas na omawianie zagadnień związanych z modelowaniem .

Program RHINO posiada z punktu widzenia modelarza 2 bardzo ciekawe funkcje . Jedna z nich to wspomniane rozwijanie powierzchni wraz z możliwością rozwinięcia krzywych które znajdują się na tej powierzchni . Druga to możliwość rzutowania krzywych na powierzchnie .
Jest to bardzo wygodne ponieważ zazwyczaj pracuje się na ortogonalnych rzutach które stanowią referencje projektu .

Jak wygląda to w Sketchupie ?
 
Powierzchnia i element do zrzutowania
Mamy nasza powierzchnie i element np kamuflarzu który będzimy chcieli umieścić na powierzchni.






 
Tymczasowa bryła

Wyciągamy nasz element, tworząc nową bryłę , zaznaczamy oba obiekty i wykonujemy ich przecięcie .







Rezultat przecięcia
Naszą tymczasową bryłę możemy usunąć i otrzymujemy jej rzut na naszej powierzchni .








Sketchup interpretuje krzywe jako zbiór odcinków ( lub polilinie ), co teoretycznie może wydawać się wadą . Jednak daje to nam nowe możliwości. Na powyższym rysunku wszystkie punkty za zaznaczone pogrubieniem . Co z tego wynika ? Że jeżeli mamy dowolny punkt który znajdyje się wewnątrz trójkąta, to możemy wyznaczyć jego odległości do 2 wierzchołków, a następnie zastosować wcześniej omówiony algorytm i wyznaczyć położenie punktu na rozwinięciu .

Wyznaczanie punktów wewnątrz trójkąta








C.D.N.

Saturday, March 26, 2011

Z 3D do 2D z algebrą

SEE THIS POST IN ENGLISH

Aby napisac algorytm który rozwinie nam powierzchnie, musimy zapoznac sie z dwoma zadaniami z matematyki .

W poprzednim etapie pokazywaliśmy jak Rozwinąc powierzchni przy pomocy geometrii wykreślnej , znając długosci bokow trójkąta .Teraz pokażemy jak dokonać tego przy pomocy liczb .

Współrzędne w przestrzeni 3D i długości boków trójkąta
Pierwszą rzeczą z którą musimy się zmierzyć jest długość boków trójkąta .
Trójkąt możemy zdefiniować w przestrzeni przy pomocy 3 punktów . A każdemu z tych punktów mozemy przypisać 3 współrzędne (x,y,z) .
Odległośc między punktami możemy zdefiniować jako pierwiastek z sumy kwadratów rożnic poszczególnych współrzednych .
W ten sposób mamy długości boków danego trójkąta .

Konstrucja
 Kolejny krok wykonujemy juz w przestrzeni dwuwymiarowej . Pierwszym etapem jest zdefiniowanie odcinka o dlugosci pierwszego boku ( D na rysunku ) . Odcinek ten zdefiniowany jest przez punky A i B i odpowiednich współrzędnych . Pozostale dwa boki trójkąta mają długośc odpowiedni r1 i r2 . Szukamy punktu C o współrzędnych (xC; yC) .

Pierwszym etapem jest znalezienie punktu S .
Rozpisując twierdzenie Pitagorasa dla trójkątów ACS i BCS otrzymujemy :
r1² = h² + a²
r2² = h² + b²
Z równań :
r1² - r2² = a² - b²
r1² -r2² = (a+b) * (a-b)
ponieważ D = a + b  i b = D - a
r1² -r2² = D * (2a-D)
stąd:
a = (r1² -r2² +D²) / 2D

Punkt S ma więc współrzędne:
xS = x1 + (Dx * a) / D
yS = y1 + (Dy * a) / D

Znając a możemy wyliczyć również h :  h = √(r1² - a²)

Mozemy wypisać również następujące zależności :
Dy / D = dx / h  =>  dx = - (Dy * h ) / D
( znak mówi nam o tym że jeżeli Dy jest dodatnie, czyli punkt B jest wyżej niz punkt A, to punkt C znajduje się na lewo od punktu S i vice-versa )
Dx / D = dy / h  =>  dy = (Dx * h ) / D

Ostatni krok to wyznaczenie punktu C :
xC = xS + dx = x1 + (Dx * a) / D - (Dy * h ) / D = x1 + (Dx * a - Dy * h ) / D
yC = yS + dy = y1 + (Dy * a) / D + (Dx * h ) / D = y1 + (Dy * a + Dx * h ) / D

Jeżeli chcemy wyznaczyć analogiczny punkt C' który znajduje się poniżej odcinka AB :
xC' = xS + dx = x1 + (Dx * a) / D + (Dy * h ) / D = x1 + (Dx * a + Dy * h ) / D
yC' = yS + dy = y1 + (Dy * a) / D - (Dx * h ) / D = y1 + (Dy * a - Dx * h ) / D

C.D.N.

Thursday, March 24, 2011

Moja teoria rozwijania

SEE THIS POST IN ENGLISH

Powierzchnia rozwijalna to taka powierzchnia prostokreślna która w każdym swoim miejscu posiada krzywiznę Gaussa równa 0.

Tyle teorii. W praktyce oznacza to, ęe powierzchnię rozwijalną można przekształcić w część płaszczyzny bez rozciągania jej albo rozcinania .
 
Rozwinięcie pobocznicy stożka .








 Przykładami takich powierzchni są np pobocznice stożka i walca



Idac krok dalej można uogólnic, że stożek i walec sa szczególnymi postaciami odpowiednio ostrosłupa i graniastosłupa, o nieskończonej ilości ścian . Dlatego każdy ostrosłup i graniastosłup można rozwinąć na powierzchni.

Można powiedzieć, że powierzchnie można rozwinąć jeżeli będzie ona składać się z płaskich elementów i każdy z tych elementów będzie stykał się z sąsiednimi co najwyżej przy pomocy dwóch boków .

Powierzchnie rozwijalne rozpiete miedzy splajnem i lukiem,
oraz pomiedzy poliliniami ktore przybliżaja pierwotne krzywe.
Powierzchnie zamodelowane jako czworokaty i trójkaty .
Jeżeli więc mamy dwie krzywe i przybliżymy je za pomoca polilinii o równej ilości części ,to możemy na tych krzywych rozpiąc powierzchnie skladająca się z szeregu czworoboków .
Jednak nie wszystkie czworoboki będą płaskie .Aby rozwiązać ten problem , podzielmy każdy czworobok na dwa trójkaty . Nasz problem znika , ponieważ każdy trójkąt jest figura plaską .

Jak przekształcić 3-wymiarową powierzchnię składajacą się z trójkątow na płaską figurę ?


Krzywe definiujące, rozpięta powierzchnia i jej rozwiniecie .

Załóżmy dwie krzywe ktore definiują nam powierzchnię  i punkty tych krzywych oznaczmy A1-A5 i B1-B5 .
Na krzywych rozepnijmy powierzchnię składającą sie z trójkatow, jak na rysunku obok . Taką trójwymiarową powierzchnię można rozwinąć w płaska figurę przy pomocy prostej konstrukcji .

Konstrukcja trójkąta z 3 danych bokow.
   Jezeli znamy długości 3 boków trójkąta to możemy taki trójkąt skonstruować rysujac odcinek o długości pierwszego boku, a następnie kreśląc z jego konców łuki o promieniach równych długościom 2 pozostałych boków.
Powtarzając ten krok dla wszystkich trójkątow z których składa sie dana powierzchnia , otrzymujemy jej rozwinięcie .



Jak zautomatyzowac ten proces ?

C.D.N.

Wednesday, March 23, 2011

Projektowanie kartonówki

SEE THIS POST IN ENGLISH.

Projektowanie modelu kartonowego w 3D można sprowadzić do kilku etapów:
  1. Zgromadzenie materiałów
  2. Modelowanie w 3D
  3. Rozwinięcie części
  4. Obróbka graficzna (kolor)
  5. Próbne sklejanie
  6. Ewentualne poprawki.
Etap 1 nie wymaga w zasadzie omówienia, jednak im lepszej jakości materiały jesteśmy w stanie zgromadzić, tym lepiej .
Etap 2 to zamodelowanie elementów modelu przy pomocy oprogramowania 3D w taki sposób , aby było możliwe rozwinięcie tych elementów na płasko, bez zniekształceń. Najczęściej używanym oprogramowaniem jest RHINO, z tego względu, że posiada opcje automatycznego rozwijania powierzchni . Pozwala więc wykonać etap 2 i 3 w jednym programie .
Etap 4 to wyeksportowanie rozwiniętych części do programu  graficznego ( najczęściej COREL), i dodanie dodatkowych elementów typu linie, kamuflarz , napisy eksploatacyjne itp .
Etap 5 pozwala sprawdzić czy masz pomysł jest "sklejalny" .
Jesli tak nie jest, to w etapie 6 możemy wprowadzić ewentualne poprawki, co sprowadza się de facto do ponownego zamodelowania / przemodelowania (patrz etap 2) .

RHINO oraz COREL mają jednak jedną zasadniczą wadę , tj. CENE .

Dlatego pomysł na ten blog - czy da się to zrobić za darmo ?

C.D.N.