A M O S SFAM "3D w Amos`ie" Częstochowa 1991.10.18 10:00 AM Czeőç ! W tym cyklu artykuîów chcę zajmowaç się trudniejszymi zagadnieniami zwićzanymi z programowaniem w języku AMOS . Poczćtkowo ta rubryka miaîa dotyczyç GFA-Basic, jednak ze względu na wydanie przez PALMApress bardzo fajnej ksićţki,dotyczćcej AMOS`a uznaîem,ţe więcej osób będzie zajmowaç się AMOS`em niţ GFA do którego nie moţna zdobyç ţadnych ksićţek. Tytuî 3d nie őwiadczy o tym, ţę zajmowaç się będę tylko grafikć trójwymiarowć . W tym cyklu omawiane będć ogólne problemy zwićzane z programowaniem w AMOS`ie. Jeőli masz jakiő problem zwićzany z AMOS`em to napisz na adres redakcji a ja spróbuję go rozwićzaç i przedstawiç w kolejnym odcinku 3d. W tym odcinku zajmiemy się problemem zwićzanym z narysowaniem odcinka majćc podane jego wspóîrzędne poczć- tkowe i końcowe. Moţna powiedzieç, ţe to banalnie proste - wystarczy jedna komenda DRAW . Zgadza się, tylko,ţe mamy za zadanie przedstawiç np. lot pocisku wystrzelonego przez jakćő postaç z naszej gry,w cel. Uţywajćc instrukcji DRAW nie będziemy znali wspóîrzę- dnych potrzebnych nam do pîynnej animacji. Ja podam potrzebne wzory do obliczenia tego typu wspóîrzędnych. Postaram się naprowadziç na wîaőciwy tor, zostawiajćc jednak problem pisania programu czytelnikowi. Jeőli jednak ktoő stwierdzi, ţe nie jest w stanie samodzielnie napisaç takiego programu to w katalogu AMOS, na tej dyskietce, znajdzie gotowy program i moţe, poprzez analizę tego programu,zrozumie zagadnienie. Program nosi tytuî "DRAW.amos", po jego uruchomieniu naleţy podaç wspóîrzędne poczćtkowe i końcowe odcinka. Poniewaţ taki odcinek jest dosyç szybko rysowany to wsta- wiîem w programie instrukcję WAIT , która pozwala na zaob- serwowanie rysowania prostej - punkt po punkcie. Chcćc narysowaç odcinek, wedîug zadanych wspóîrzędnych, musimy obliczyç wspóîczynnik nachylenia tego odcinka oraz wartoőç przesunięcia . Wspóîczynnik nachylenia M obliczamy stosujćc wzór: M = ( y2 - y1 ) / ( x2 - x1 ) Jeţeli jednak,wartoőç bezwzględna y2-y1 jest większa od x2-x1 to M obliczamy w następujćcy sposób: M = ( x2 - x1 ) / ( y2 - y1 ) Uwaga !!! Programujćc w AMOS`ie naleţy pamiętaç,ţe AMOS wymaga dodania znaku # do kaţdej zmiennej,jeőli majć byç zapamiętane wartoőci po kropce dziesietnej. Ze względu na czytelnoőç podawanych wzorów pomijam te oznaczenia. Wartoőç przesunięcia B obliczmy przy pomocy następujć- cego wzoru: B = y1 - M * x1 W przypadku gdy abs ( y2 - y1 ) > abs ( x2 - x1 ) stosujemy wzór: B = x1 - M * y1 Majćc wspóîrzędne nachylenia i przesunięcia moţna obli- czyç wspóîrzędne poszczególnych punktów odcinka wzorem: Y = M * X + B W drugim przypadku gdy abs ( y2 - y1 ) > abs( x2 - x1 ) X = M * Y + B Poszczególne punkty obliczamy: For X = X1 To X2 Y = M * X + B Plot X,Y,KOLOR Next X Naleţy jednak pamiętaç,ţe gdy x1 > x2 to dodajemy do pętli For X = X1 to X2 Step -1 I to by byîo tyle o rysowaniu odcinka . S F A M P.S. Kiedy miaî wyjőç pierwszy numer NEXT LIFE`a zostaîem poproszony o napisanie artykuîów do tego numeru. Fakt jest faktem,ţe pisaç nie lubię,ale jak juţ siadîem do pisania to napisaîem trzy artykuîy,nad którymi siedzia- îem X godzin.(X godzin to bardzo duţo) Niestety, redakcja NEXT LIFE`a umieőciîa tylko jeden artykuî dotyczćcy GFA-Basic.Pozostaîe dwa o takich fajnych urzćdzeniach takich jak: RocGen i Digitalizator, zostaîy pominięte. Pogodziîem się z tym wiedzćc, ţe zostanć wypu- szczone w następnym numerze. Oba artykuîy zostaîy nagrane na dysku ZUZY i moim.Niestety ZUZA nie wie gdzie nagraî te artykuîy i czy ich przypadkiem nie skasowaî. Mój dysk z artykuîami dla NEXT LIFE`a zostaî zaatakowa- ny przez wredny v I R U S.Dlatego oba artykuîy nie zobaczć őwiatîa dziennego.