🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.pascal
15 messages
15 total messages Started by Kowal Tue, 15 Dec 1998 16:20
Wypelnianie przestrzeni i obracanie bitmap
#107
Author: Kowal
Date: Tue, 15 Dec 1998 16:20
21 lines
1922 bytes
Mam maly problem. Pisze gre (cos podobnego do Critikal Mass) i potrzebuje
pomocy. Kazdy statek moze tam leciec pod dowolnym katem. Nie mam
najmniejszej ochoty bawienia sie 360 bitmapami (statkami pod katem), ale nie
mam dobrej medoty na obrocenie obrazka. Probowalem uzycwzoru x := r *
(cos(alfa)) i y := r * (sin(alfa)); ale po obroceniu obrazka o 360 stopni
nie wygladal on juz tak jak powinien. Moze wiec ktos z was zna lepszy sposob
na obrocenie obrazka.

Do glowy przyszedl mi tez inny pomysl. Moglbym tak jak w Crtical Mass
rysowac statki z trojkatow, kolek, kwadratow i jeszcze czegos tam, ale
zapomnialem czego :-). Ale znowu jest problem. Do tego musialbym miec sposob
na wypelnienie zamknietej powierzchni (z gory mowie, ze nie uzywam
pascalowego modulu Graph, bo jest on strasznie wolny; uzywam bezposredno
pamieci ekrnu). Wiem, ze musi byc na to jakis sposob, bo przeciez sa
procedury ktore to robia. Najlepiej by bylo gdyby algorytm wypelniania nie
wymagal
rogow obszaru (bo jak zapelnic kolo?), ale kazdy sie przyda.

Blagam pomozcie...

Kowal ( kowal2@friko6.onet.pl )
Re: Wypelnianie przestrzeni i obracanie bitmap
#108
Author: Maciej Sinilo
Date: Tue, 15 Dec 1998 20:34
25 lines
2103 bytes
Kowal wrote:
> 
> Mam maly problem. Pisze gre (cos podobnego do Critikal Mass) i potrzebuje
> pomocy. Kazdy statek moze tam leciec pod dowolnym katem. Nie mam
> najmniejszej ochoty bawienia sie 360 bitmapami (statkami pod katem), ale nie
> mam dobrej medoty na obrocenie obrazka. Probowalem uzycwzoru x := r *
> (cos(alfa)) i y := r * (sin(alfa)); ale po obroceniu obrazka o 360 stopni
> nie wygladal on juz tak jak powinien. Moze wiec ktos z was zna lepszy sposob
> na obrocenie obrazka.
Jedna z metod to np. naniesienie textury ze statkiem na kwadrat (moze
byc nawet w przestrzeni 2d) i wywalanie tego na ekran (z teksturowaniem
i uwzglednianiem przezroczystosci). Wowczas obracanie statku sprowadzi
sie do obracania wierzcholkow kwadratu. 
Inna metoda to skorzystanie z efektu zwanego na scenie zoom-rotatorem.
Polega to na tym (jak zreszta mowi nazwa), ze obracamy i skalujemy
bitmape. Jezeli chcesz moge ci podeslac moje stare assemblerowe zrodlo
do takiego efektu (bitmapa 256x256). Ale IMHO pierwszy sposob jest
lepszy -- bardziej elastyczny. W ogole na twoim miejscu zastanowilbym
sie nad zrobieniem statkow w 3d. Dobry facet od 3dstudio potrafi z
niewielkiej ilosci face'ow calkiem fajne modele tworzyc.

-- 
---------------------------------------------------
Maciej Sinilo
Yarpen/Substance
Re: Wypelnianie przestrzeni i obracanie bitmap
#109
Author: Kowal
Date: Wed, 16 Dec 1998 16:31
22 lines
1853 bytes
>Jedna z metod to np. naniesienie textury ze statkiem na kwadrat (moze
>byc nawet w przestrzeni 2d) i wywalanie tego na ekran (z teksturowaniem
>i uwzglednianiem przezroczystosci). Wowczas obracanie statku sprowadzi
>sie do obracania wierzcholkow kwadratu.

No dobrze, ale to jest czysta (zbyt czysta) teoria. moze jakis wzor, albo
metoda?

> W ogole na twoim miejscu zastanowilbym
>sie nad zrobieniem statkow w 3d. Dobry facet od 3dstudio potrafi z
>niewielkiej ilosci face'ow calkiem fajne modele tworzyc.


Bez zartow. Nie jestem taki dobry (czyt. nie chce mi sie) bawic sie z
formatem 3d studio.

Bardzej interesuje mnie pierwsza wymieniona metoda. Teksturowanie, to po
prostu wypelnianie ustalonego obszaru. Gdybym umial to zrobic, moglbym dac
sobie spokoj z bitmapami i statki rysowac recznie, tak jak zrobiono to w
Critical Mass. Napisz cos wiecej o teksturowaniu.

Kowal ( kowal2@friko6.onet.pl )
Re: Wypelnianie przestrzeni i obracanie bitmap
#110
Author: Maciej Sinilo
Date: Wed, 16 Dec 1998 23:36
32 lines
2090 bytes
Kowal wrote:
> 
> >Jedna z metod to np. naniesienie textury ze statkiem na kwadrat (moze
> >byc nawet w przestrzeni 2d) i wywalanie tego na ekran (z teksturowaniem
> >i uwzglednianiem przezroczystosci). Wowczas obracanie statku sprowadzi
> >sie do obracania wierzcholkow kwadratu.
> 
> No dobrze, ale to jest czysta (zbyt czysta) teoria. moze jakis wzor, albo
> metoda?
wzor na obrot punktu w 2d to pewnie cos w stylu:
rotated_x = (original_x*cos(theta)) - (original_y*sin(theta))
rotated_y = (original_y*cos(theta)) + (original_x*sin(theta))
kazdy punkt kwadratu podstawiasz do tego rownania i voila. texturowanie
to temat na dluzszy artykul, poszukaj po sieci, jest masa dokumentow o
tym. jezeli chcesz, to moge ci jeden podrzucic na priva (po angielsku).


> 
> > W ogole na twoim miejscu zastanowilbym
> >sie nad zrobieniem statkow w 3d. Dobry facet od 3dstudio potrafi z
> >niewielkiej ilosci face'ow calkiem fajne modele tworzyc.
> 
> Bez zartow. Nie jestem taki dobry (czyt. nie chce mi sie) bawic sie z
> formatem 3d studio.
nie chce ci sie? no to szkoda... wiesz, gierki w 2d to juz troszke
przezytek w dzisiejszych czasach.


-- 
---------------------------------------------------
Maciej Sinilo
Yarpen/Substance
Re: Wypelnianie przestrzeni i obracanie bitmap
#121
Author: Konrad 'kaspy' Palczynski
Date: Thu, 17 Dec 1998 11:41
25 lines
2006 bytes
Kowal wrote:
> 
> Mam maly problem. Pisze gre (cos podobnego do Critikal Mass) i potrzebuje
> pomocy. Kazdy statek moze tam leciec pod dowolnym katem. Nie mam
> najmniejszej ochoty bawienia sie 360 bitmapami (statkami pod katem), ale nie
> mam dobrej medoty na obrocenie obrazka. Probowalem uzycwzoru x := r *
> (cos(alfa)) i y := r * (sin(alfa)); ale po obroceniu obrazka o 360 stopni
> nie wygladal on juz tak jak powinien. Moze wiec ktos z was zna lepszy sposob
> na obrocenie obrazka.

dobrze robisz, ale nie do konca, po pierwsze, przy obliczniu kolejnych
polozen uzywaj kata bezwzglednego i zawsze pierwotnej bitmapy, wtedy po
obroceniu o 360 stopni statek bedzie wygladal tak samo, po drugie,
obliczaj wspolzendna piksel na tekstorze, z wspolrzednej ekranowej,
wtedy latwo tez mozesz caly interes przeskalowac, jesli na przyklad
korzystasz z 320x200, poza tym wtedy da sie to latwo zrobic w
asemblerze, bo bedziesz operowal caly czas na liczbach calkowitych, no i
rzaden piksel ci sie nie zgubi, no i wogole, dzisiaj mam egzamin o
godzinie 20, pora dla murzynow k.... mac

-- 
-- Konrad "Kaspy" Palczynski ----------- 
-- http://www.kaspy.z.pl --------------- <- x-mas version !!!
-- mailto:3941260@pager.mirabilis.com -- 
-- AGH - EAIiE - robotics --------------
Re: Wypelnianie przestrzeni i obracanie bitmap
#111
Author: A.'SoTe' B.
Date: Thu, 17 Dec 1998 17:15
11 lines
1198 bytes
Maciej Sinilo wrote:
> 
> > Bez zartow. Nie jestem taki dobry (czyt. nie chce mi sie) bawic sie z
> > formatem 3d studio.
> nie chce ci sie? no to szkoda... wiesz, gierki w 2d to juz troszke
> przezytek w dzisiejszych czasach.

:) No eeeejjj :)  Jezeli mam wybierac pomiedzy graniem np. w przygodowke
w 3D, ktora musi zmiescic wiekszosc grafiki np. w 2MB na VooDoo, a gra
w przygodowke w 2D ktora moze miec doczytywana grafike na tyle ile
ma pamieci komputer (32, 64 MB ?) to wybor jest dla mnie oczywisty.
Re: Wypelnianie przestrzeni i obracanie bitmap
#112
Author: Maciej Sinilo
Date: Fri, 18 Dec 1998 00:49
19 lines
1777 bytes
A.'SoTe' B. wrote:
> 
> Maciej Sinilo wrote:
> > nie chce ci sie? no to szkoda... wiesz, gierki w 2d to juz troszke
> > przezytek w dzisiejszych czasach.
> 
> :) No eeeejjj :)  Jezeli mam wybierac pomiedzy graniem np. w przygodowke
> w 3D, ktora musi zmiescic wiekszosc grafiki np. w 2MB na VooDoo, a gra
> w przygodowke w 2D ktora moze miec doczytywana grafike na tyle ile
> ma pamieci komputer (32, 64 MB ?) to wybor jest dla mnie oczywisty.
No fakt... Przygodowki sie jeszcze trzymaja, bo juz nawet do strategii
uzywa sie 3d coraz czesciej. Ale akurat zadajacemy to poczatkowe pytanie
o obracanie bitmap chodzi o strzelanke. Nawet jezeli nie robimy pelnego
3d, to modele mozna w 3ds zrobic... Tak jest np. w Katharsis/Metropolis.

-- 
---------------------------------------------------
Maciej Sinilo
Yarpen/Substance
Re: Wypelnianie przestrzeni i obracanie bitmap
#113
Author: Kowal
Date: Fri, 18 Dec 1998 08:40
24 lines
2067 bytes
>rotated_x = (original_x*cos(theta)) - (original_y*sin(theta))
>rotated_y = (original_y*cos(theta)) + (original_x*sin(theta))


Probowalem wykorzystac, te wzory do obrocenia kazdego punktu bitmapy i UDALO
SIE.
Niestety nie do konca. Tak jak mowilem :-) (wlasciwie uzsmiech przez lzy, bo
nie ma sie z czego cieszyc) sa straty. W obroconym obrazku skladajacym sie z
kolorow: bialy i czerwony zostaje czarne piksele. MOge wyslac tu mizerne
efekty mojej pracy, jesli kogos to interesuje, ostrzegam tylko, ze bede
musial wyslac tez swoja bibliteke do VGA, bo inaczej ani rusz.

Jak zrobic, zeby nie bylo tych "czarnych dziur"? To juz jest prawie to czego
oczekiwalem i brakuje juz tak malo! TO MUSI SIE UDAC!

>kazdy punkt kwadratu podstawiasz do tego rownania i voila. texturowanie
>to temat na dluzszy artykul, poszukaj po sieci, jest masa dokumentow o
>tym. jezeli chcesz, to moge ci jeden podrzucic na priva (po angielsku).

Tak bylbym zainteresowany, szkoda, ze po angielsku, ale ucze sie juz go
pewien czas. Moze jednak obedzie sie bez tego.

Kowal ( kowal2@friko6.onet.pl )
Re: Wypelnianie przestrzeni i obracanie bitmap
#114
Author: Paweł Ziemian
Date: Fri, 18 Dec 1998 14:54
15 lines
1665 bytes
Kowal napisał(a) w wiadomości: <367a1558.0@news.vogel.pl>...

>kolorow: bialy i czerwony zostaje czarne piksele. MOge wyslac tu mizerne
>efekty mojej pracy, jesli kogos to interesuje, ostrzegam tylko, ze bede
>musial wyslac tez swoja bibliteke do VGA, bo inaczej ani rusz.
>
>Jak zrobic, zeby nie bylo tych "czarnych dziur"? To juz jest prawie to
czego
>oczekiwalem i brakuje juz tak malo! TO MUSI SIE UDAC!
>

A może robić odwrotnie. Brać współrzędne z bitmapy docelowej, obracać w
drugą stronę i brać kolor punktu na jaki pokazują wyliczone współrzędne. A
jeśli punkt leży po za bitmapą to ustawić jakiś umowny kolor tła.
Re: Wypelnianie przestrzeni i obracanie bitmap
#115
Author: Marcin 'Qrczak' Kowalczyk
Date: Fri, 18 Dec 1998 16:29
14 lines
1572 bytes
On Fri, 18 Dec 1998, Kowal wrote:

> W obroconym obrazku skladajacym sie z kolorow: bialy i czerwony
> zostaje czarne piksele.

Czyżbyś brał każdy piksel i próbował go obrócić? :-)  Odwrotne - dla
każdego piksela _wyniku_ sprawdź, gdzie on był przed obrotem! Wystarczy
pomyśleć...

-- 
 __("<    Marcin Kowalczyk * qrczak@knm.org.pl http://kki.net.pl/qrczak/
 \__/       GCS/M d- s+:-- a21 C+++>+++$ UL++>++++$ P+++ L++>++++$ E->++
  ^^                W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-
Re: Wypelnianie przestrzeni i obracanie bitmap
#116
Author: Kowal
Date: Fri, 18 Dec 1998 20:39
13 lines
1625 bytes
To niemozliwe udalo sie!!

Ale to nie koniec problemow. Ten jest naszczescie latwy (tak mi sie wydaje)
do "zwalczenia".

Powiedzmy, ze statek mam na srodku bitmapy... Po obrocie o 45 stopni widze
juz tylko kawelek statku. Skurczybyk odlecial!! Niestety gra wymaga, zeby
statek CALY CZASZ byl na srodku bitmapy (dlaczego? nie musze chyba
wyjasniac...) Moge oczywiscie sprobawac metody prob i bledow (moja ulubiona
:-), ale trudno bedzie sie dopatrzyc tak malych przesuniec. Czy jest moze
jakis wzorna obliczenie tych przesuniec?

Kowal ( kowal2@friko6.onet.pl )
Re: Wypelnianie przestrzeni i obracanie bitmap
#117
Author: Maciej Malycha
Date: Sat, 19 Dec 1998 10:17
21 lines
1659 bytes
In pl.comp.lang.pascal Kowal <kowal2@friko6.onet.pl.nospam> wrote:
> To niemozliwe udalo sie!!
> 
> Ale to nie koniec problemow. Ten jest naszczescie latwy (tak mi sie wydaje)
> do "zwalczenia".
> 
> Powiedzmy, ze statek mam na srodku bitmapy... Po obrocie o 45 stopni widze
> juz tylko kawelek statku. Skurczybyk odlecial!! Niestety gra wymaga, zeby
> statek CALY CZASZ byl na srodku bitmapy (dlaczego? nie musze chyba
> wyjasniac...) Moge oczywiscie sprobawac metody prob i bledow (moja ulubiona
> :-), ale trudno bedzie sie dopatrzyc tak malych przesuniec. Czy jest moze
> jakis wzorna obliczenie tych przesuniec?
> 
> Kowal ( kowal2@friko6.onet.pl )
> 
> 

Nie rozumiem. Gdzie masz os obrotu?

-- 
Maciej Małycha <mmac@ncac.torun.pl>
Re: Wypelnianie przestrzeni i obracanie bitmap
#118
Author: Kowal
Date: Sun, 20 Dec 1998 10:05
10 lines
1364 bytes
>Nie rozumiem. Gdzie masz os obrotu?


Jesli chodzi Ci o punkt, wokol ktorego to wszystko sie obraca, to jest to
punkt (0, 0)
Najwygodniej byloby "przesunac" ten punkt na srodek obrazka, ale jak to
zrobic?

Kowal ( kowal2@friko6.onet.pl )
Re: Wypelnianie przestrzeni i obracanie bitmap
#119
Author: Marcin Rutkowski
Date: Mon, 21 Dec 1998 06:25
22 lines
1878 bytes
>Najwygodniej byloby "przesunac" ten punkt na srodek obrazka, ale jak to
>zrobic?
Jak "TO" zrobić ?????
Takie rzeczy są opisane w każdej książce do geometrii (materiał na poziomie
szkoły podstawowej) !!!

Wzor na obrot punktu w 2d (patrz wcześniejsze posty):
  r_x = (o_x*cos(theta)) - (o_y*sin(theta))
  r_y = (o_y*cos(theta)) + (o_x*sin(theta))

Gdzie r_x, r_y, o_x, o_y są podane względem środka obrazka, czyli:
  r_x = rotated_x - (size_x div 2)
  r_y = rotated_y - (size_y div 2)
  o_x = original_x - (size_x div 2)
  o_y = original_y - (size_y div 2)

Jak sobie to wszystko poprzekształcasz to pewnie Ci się uda !!!?

--
Marcin Rutkowski
MAIL: marcinru@vc.pl
WWW: http://friko.onet.pl/el/marcinru/
Re: Wypelnianie przestrzeni i obracanie bitmap
#120
Author: Kowal
Date: Tue, 22 Dec 1998 17:27
12 lines
1539 bytes
>Jak "TO" zrobić ?????
>Takie rzeczy są opisane w każdej książce do geometrii (materiał na poziomie
>szkoły podstawowej) !!!


O rany!! Uzywalem wzoru, a nawe go nie rozumialem :-( Sorry za taka ...
hmm... jak to nazwac?
Material jest na poziomie podstawowki, ale moze ja jeszcze tego nie mialem
(7 klasa)
Dzieki za pomoc.

Kowal ( kowal2@friko6.onet.pl )
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads