Skocz do zawartości
Marrrcin

[pascal]obracająca Się Figura

Rekomendowane odpowiedzi

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!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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 przez ridczak

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...