Marrrcin Opublikowano 19 Marca 2007 Zgłoś Opublikowano 19 Marca 2007 Otóż naszła mnie ochota na zrobienie w Pascalu programiku który wyświetlał by "znak radioaktywności" i który obracał by się wokół własnej osi. Narysowanie samego znaku było proste, ale nie mam pojęcia jak się zabrać za to, żeby kręcił się na około(jest to w ogóle możliwe?). Program radioactivity_sign;Uses crt,wincrt,wingraph;Var gd,gm:Integer;Begin gd:=D8bit; gm:=m1024x768; InitGraph(gd,gm,''); Circle(512,384,200); Line(312,384,712,384); Line(411,211,611,557); Line(612,210,412,557); SetFillStyle(SolidFill,GetRGBColor(247,218,13)); FloodFill(315,382,white); FloodFill(613,362,white); FloodFill(512,388,white); SetFillStyle(SolidFill,GetRGBColor(172,84,68)); FloodFill(1,1,white); Repeat Until CloseGraphRequest or Keypressed;End. Powyższy kod jest z wersji "light" mojego programiku który jest trochę mniej estetyczny, ale za to krótszy i szybciej go zrozumiecie. Dołączam też lepszą wersję. KLIK! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 19 Marca 2007 Zgłoś Opublikowano 19 Marca 2007 Nieźle. A teraz pytania: 1. Chcesz, aby znak był płaski (tak jak teraz), czy żeby był 3D (miał "grubość")? 2. Wiesz na czym polega animacja? Jak chcesz płaski, to prosta sprawa. To nic innego jak obrazek klatka po klatce, przy czym 25 klatek na sekundę to minimalna gwarancja płynności (mówimi tu o dobrej animacji, a nie poziomu GIFa). Wytnij sobie taki znak z papieru, trzymając przed sobą obracaj powoli. Zauważ, jak zmienia się kształt znaku w zależności od kąta obrotu. Teraz wystarczy narysować to używając analogicznego (z Twoim) kawałka kodu. Każda klatka to oddzielny rysunek. To chyba wszystko. Powodzenia. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Marrrcin Opublikowano 20 Marca 2007 Zgłoś Opublikowano 20 Marca 2007 Nieźle. A teraz pytania: 1. Chcesz, aby znak był płaski (tak jak teraz), czy żeby był 3D (miał "grubość")? 2. Wiesz na czym polega animacja? Jak chcesz płaski, to prosta sprawa. To nic innego jak obrazek klatka po klatce, przy czym 25 klatek na sekundę to minimalna gwarancja płynności (mówimi tu o dobrej animacji, a nie poziomu GIFa). Wytnij sobie taki znak z papieru, trzymając przed sobą obracaj powoli. Zauważ, jak zmienia się kształt znaku w zależności od kąta obrotu. Teraz wystarczy narysować to używając analogicznego (z Twoim) kawałka kodu. Każda klatka to oddzielny rysunek. To chyba wszystko. Powodzenia. Znak ma być płaski.Chyba mnie to końca nie zrozumiałeś. Wiem że można to zrobić pixel po pixelu, ale wtedy to ten teraz malutki programik miałby z 1000 linijek. Chodzi mi o to czy jest jakaś metoda którą możnaby zrobić to w krótszy sposób. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
adamski8 Opublikowano 20 Marca 2007 Zgłoś Opublikowano 20 Marca 2007 nie no nie 1000 linijek... po pierwsze zrob ze 'znaku' procedure z parametrami, a potem w petli musisz zmieniac parametry i tyle. :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ridczak Opublikowano 20 Marca 2007 Zgłoś Opublikowano 20 Marca 2007 (edytowane) Napisz funkcje, ktora bedzie obracac punkty w przestrzeni 3D (dosc proste rownania trygonometryczne, poszukaj na google ;)) i na tej podstawie rysuj poszczegolne klatki animacji (podobnie jak robisz teraz) w petli. W kazdej nastepnej iteracji bedzie sie zmienial kat/katy (w osi x,y,z - zalezy jak chcesz obracac) o jakas wartosc. Naspepnie rzutujesz (tez poszukaj na google funkcji) wyliczone nowe wspolrzedne 3D na 2D i rysujesz na ekranie. Edytowane 20 Marca 2007 przez ridczak Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...