Forth
http://fforum.winglion.ru/

Конкурс: рисуем космос
http://fforum.winglion.ru/viewtopic.php?f=19&t=2591
Страница 1 из 2

Автор:  Hishnik [ Пт апр 30, 2010 20:43 ]
Заголовок сообщения:  Конкурс: рисуем космос

Объявляется конкурс на создание "космической" графики средствами Форта. В качестве решений можно представлять любые варианты изображений на космическую тему, сгенерированных на Форте - звезды, планеты, космические корабли, астероиды и кометы, и все прочее, что придет в голову. Изображение может быть двумерное, трехмерное, статическое, динамическое или интерактивное - на усмотрение автора.

Автор:  вопрос [ Вт май 04, 2010 13:38 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Хищник писал(а):
Объявляется конкурс на создание "космической" графики средствами Форта. В качестве решений можно представлять любые варианты изображений на космическую тему, сгенерированных на Форте - звезды, планеты, космические корабли, астероиды и кометы, и все прочее, что придет в голову. Изображение может быть двумерное, трехмерное, статическое, динамическое или интерактивное - на усмотрение автора.


Космос бывает виден с Земли, и если на поверхности есть крупные сооружения, то впечатление очень космическое

Потом вытрем этот офтоп :(
прошу прощения, трудно было не поделиться

Изображение
гора в глубине - вулкан. Впечаляет? Есть ощущение что космос близко?

вот большая фотография - это всё из вики - смотреть в полный экран
http://upload.wikimedia.org/wikipedia/c ... _2006.jpeg


На самом деле я к тому, что по-настоящему космическая графика - это искусство

А что хочет Хищник?

Автор:  VoidVolker [ Вт май 04, 2010 21:04 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

вопрос писал(а):
гора в глубине - вулкан. Впечаляет? Есть ощущение что космос близко?

Нет. Ни капли. Космосом даже и не пахнет - одна трава. И зачем надо было выкладывать в полный размер? Сложно было превью или линк сделать?
А настоящий космос здесь:
http://www.eso.org/public/images/
http://www.nasa.gov/multimedia/imagegallery/index.html
http://www.space.com/bestimg/index.php? ... t=galactic

Автор:  WingLion [ Вт май 04, 2010 21:10 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Народ, зачем разводить оффтопик, да еще и флудить про этот оффтопиК?

Автор:  вопрос [ Вт май 04, 2010 21:26 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

WingLion писал(а):
Народ, зачем разводить оффтопик, да еще и флудить про этот оффтопиК?
очень уж фото красивое, если непредвзято на него взглянуть, кажется, что гора где-то упирается в верхний слой атмосферы и что это для красоты , вот, видимо, такие виды внушили древним людям, что мир - это космос (космос - по древнегречески - украшение) Просто решил поделиться. Конечно, посмотрев на этот офтопик, нужно его удалить. Sorry.
Надеюсь, Хищник не огорчился
Фото http://www.nasa.gov/multimedia/imagegallery/index.html видели, спасибо

Автор:  VoidVolker [ Вт май 04, 2010 22:00 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Ну тогда и отправить весь офтопик в соответствующий раздел форума.

Автор:  Lacoste [ Ср май 05, 2010 17:14 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Уважаемые, не надо сносить эту тему в офтопик. Может у когонибуть и есть фрактальные алгоритмы генерирования космической графики.. Можно сначала выложить и их, а потом всем вместе перевести их на язык Форт.. Лично у меня Форт как раз и ассациируется с космосом.. Незнаю почему, наверное потомучто "вояджер" NASA несет этот язык в далекую бездну. И кто его знает, может "серые человечки", хотя на самом деле они зеленые, скорей поймут язык форта, чем то послание которое несет "Вояджер" :D

Автор:  вопрос [ Ср май 05, 2010 21:00 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

:D :)
для кварка

Код:
  4 VALUE V3
  40 VALUE PLANET
  30 VALUE RADIUS
200  TIMER_INTERVAL !
: p

250 1 DO 250 1 DO

   125 I - DUP * 125 J - DUP * + 15600 <        \ сама планета
   
   IF
   J I  J   I   210 RGB
   \ готово пиксел
   
   \  " текстура или "вихри"
   I I 3 * 2 / * J 4 * +
   DUP 17 MOD 7 <
   OVER 31 MOD V3 2 * 3 / < OR
   SWAP 43 MOD V3 > OR
   
   
      125 I - DUP *  PLANET J - DUP * + 900 <       \ satelite
   OR


   IF DROP 0 THEN 
   
   
   PLANET I - DUP *  125 J - DUP * + 625 <  \ other satelite
   IF DROP 255 255 255 RGB THEN
   
   PIXEL
   
   THEN

LOOP LOOP

V3 1 + DUP TO V3 40 =
IF ['] NOOP TO <TIMER> THEN PLANET 4 + TO PLANET
;

' p TO <TIMER>


газовый гигант (в нём происходят какие-то там процессы), вокруг него по перпендикулярным орбитам движутся 2 спутника - один светится. другой нет, в процессе происходит полное затмение одного другим :D

Автор:  вопрос [ Ср май 05, 2010 21:07 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Хм, так нагляднее
Код:

  4 VALUE V3
  40 VALUE PLANET
300  TIMER_INTERVAL !
: p

250 1 DO 250 1 DO

   125 I - DUP * 125 J - DUP * + 15600 <        \ сама планета
   
   IF
   J I  J   I   210 RGB
   \ готово пиксел
   
   \  " текстура" или "вихри"
   I I 3 * 2 / * J 4 * +
   DUP 17 MOD 7 <
   OVER 31 MOD V3 2 * 3 / < OR
   SWAP 43 MOD V3 > OR
   
   
   IF DROP
   \ 0
   6579300
   THEN 
   
   
      125 I - DUP *  PLANET J - DUP * + 900 <       \ satelite
      IF DROP 0 THEN
   PLANET I - DUP *  125 J - DUP * + 625 <  \ other satelite
   IF DROP 255 255 255 RGB THEN
   
   PIXEL
   
   THEN

LOOP LOOP

V3 1 + DUP TO V3 40 =
IF ['] NOOP TO <TIMER> THEN PLANET 4 + TO PLANET
;

' p TO <TIMER>

Автор:  Hishnik [ Чт май 06, 2010 09:15 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

вопрос писал(а):
300 TO TIMER_INTERVAL

300 TIMER_INTERVAL !

Я тоже постоянно путаю, как-то вот сделал таймер через VARIABLE, а просится QUAN.

Но "газовые процессы" смотрятся красиво :)

Автор:  вопрос [ Чт май 06, 2010 15:56 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Хищник писал(а):
вопрос писал(а):
300 TO TIMER_INTERVAL

300 TIMER_INTERVAL !

Я тоже постоянно путаю, как-то вот сделал таймер через VARIABLE, а просится QUAN.

Но "газовые процессы" смотрятся красиво :)


Исправил, а я то думаю, что это оно не меняется

Автор:  Hishnik [ Чт май 06, 2010 16:38 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Там оно еще будет сильно глючить, потому что 300 TO TIMER_INTERVAL установило адрес переменной на 300. Так что последующая запись туда нового значения через ! полезет в системную область. Это следствие особенностей ассемблерного кода кварка для QUAN и VARIABLE - они начинаются с mov eax, NNNN, причем для QUAN это само значение и есть, а для VARIABLE - адрес.

Автор:  Hishnik [ Чт май 06, 2010 16:55 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Что-то я никак скриншот не закачаю никуда, так что смотрим картинку в кварке :)

Ой, нет, закачал

Изображение


Код:
0 VALUE ActiveLibrary

: FUNCTION ActiveLibrary SWAP GETPROCADDRESS VALUE ;

" opengl32.dll" LOADLIBRARY VALUE OPENGL
OPENGL TO ActiveLibrary

: ? DUP 0 = IF . THEN ;

" glViewport" FUNCTION glViewPort@   : glViewPort glViewPort@ API4 DROP ;
" glPointSize" FUNCTION glPointSize@ : glPointSize glPointSize@ API1 DROP ;
" glColor3i" FUNCTION glColor3i@     : glColor3i glColor3i@ API3 DROP ;
" glColor3ubv" FUNCTION glColor3ubv@ : glColor3ubv glColor3ubv@ API1 DROP ;
" glColor4ubv" FUNCTION glColor4ubv@ : glColor4ubv glColor4ubv@ API1 DROP ;
" glVertex2dv" FUNCTION glVertex2dv@ : glVertex2dv glVertex2dv@ API1 DROP ;
" glVertex3dv" FUNCTION glVertex3dv@ : glVertex3dv glVertex3dv@ API1 DROP ;
" glBegin" FUNCTION glBegin@         : glBegin glBegin@ API1 DROP ;
" glEnd" FUNCTION glEnd@             : glEnd glEnd@ API0 DROP ;
" glEnable" FUNCTION glEnable@       : glEnable glEnable@ API1 DROP ;
" glDisable" FUNCTION glDisable@     : glDisable glDisable@ API1 DROP ;
" glClear" FUNCTION glClear@         : glClear glClear@ API1 DROP ;
" glPushMatrix" FUNCTION glPushMatrix@ : glPushMatrix glPushMatrix@ API0 DROP ;
" glPopMatrix" FUNCTION glPopMatrix@   : glPopMatrix glPopMatrix@ API0 DROP ;
" glFrustum" FUNCTION glFrustum@       : glFrustum 6 glFrustum@ API DROP ;
" glTranslatef" FUNCTION glTranslatef@ : glTranslatef glTranslatef@ API3 DROP ;
" glTexImage2D" FUNCTION glTexImage2D@ : glTexImage2D glTexImage2D@ API9 DROP ;
" glTexParameteri" FUNCTION glTexParameteri@ : glTexParameteri glTexParameteri@ API3 DROP ;
" glTexCoord2dv" FUNCTION glTexCoord2dv@ : glTexCoord2dv glTexCoord2dv@ API1 DROP ;
" glTexEnvf" FUNCTION glTexEnvf@ : glTexEnvf glTexEnvf@ API3 DROP ;

CREATE AUX3D[] 24 ALLOT

: 3dpoint
  S>F 1000.0 F/ AUX3D[] 16 + F!
  S>F 1000.0 F/ AUX3D[] 8 + F!
  S>F 1000.0 F/ AUX3D[] F!
  AUX3D[] glVertex3dv
;

CREATE TexPoint0 0.0 F, 0.0 F, 0.0 F,
CREATE TexPoint1 1.0 F, 0.0 F, 0.0 F,
CREATE TexPoint2 1.0 F, 1.0 F, 0.0 F,
CREATE TexPoint3 0.0 F, 1.0 F, 0.0 F,

CREATE Point0 0.0 F, 0.0 F, 0.0 F,
CREATE Point1 -1.0 F, 0.0 F, 0.0 F,
CREATE Point2 1.0 F, 0.0 F, 0.0 F,
CREATE Point3 0.0 F, 1.0 F, 0.0 F,
CREATE Point4 0.0 F, -1.0 F, 0.0 F,
CREATE Point5 0.0 F, 0.0 F, 1.0 F,
CREATE Point6 0.0 F, 0.0 F, -1.0 F,

CREATE Triangle1A 0.0 F, 0.0 F, -0.50 F,
CREATE Triangle1B 0.0 F, 0.5 F, -0.51 F,
CREATE Triangle1C 1.0 F, 0.9 F, -0.59 F,

FLOAT NX 1420.0 NX F!
FLOAT NY 320.0 NY F!
FLOAT NZ

: X+ NX F@ 10.0 F+ NX F! NX F@ 360.0 F> IF NX F@ 360.0 F- NX F! THEN
;
: X- NX F@ 10.0 F- NX F! NY F@ 0.0 F< IF NX F@ 360.0 F+ NX F! THEN
;
: Y+ NY F@ 10.0 F+ NY F! NY F@ 360.0 F> IF NY F@ 360.0 F- NY F! THEN ;
: Y- NY F@ 10.0 F- NY F! NY F@ 0.0 F< IF NY F@ 360.0 F+ NY F! THEN ;
: Z+ NZ F@ 10.0 F+ NZ F! NZ F@ 360.0 F> IF NZ F@ 360.0 F- NZ F! THEN ;
: Z- NZ F@ 10.0 F- NZ F! NZ F@ 0.0 F< IF NZ F@ 360.0 F+ NZ F! THEN ;



FLOAT ENGINE.X 0.0 ENGINE.X F!
FLOAT ENGINE.Y 0.0 ENGINE.Y F!
FLOAT ENGINE.Z 0.0 ENGINE.Z F!
FLOAT ENGINE.DIAMETER 0.08 ENGINE.DIAMETER F!
FLOAT ENGINE.L 0.4 ENGINE.L F!


: DRAW-ENGINE
  0x7FFFFFFF DUP DUP glColor3i
  40 0 DO
    GL_QUADS glBegin
      I S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point1 F!
      I S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point1 8 + F!
      ENGINE.L F@ -0.5 F* ENGINE.Z F@ F+ Point1 16 + F!
     
      I 1 + S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point2 F!
      I 1 + S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point2 8 + F!
      ENGINE.L F@ -0.5 F* ENGINE.Z F@ F+ Point2 16 + F!

      I 1 + S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point3 F!
      I 1 + S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point3 8 + F!
      ENGINE.L F@ 0.5 F* ENGINE.Z F@ F+ Point3 16 + F!

      I S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point4 F!
      I S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point4 8 + F!
      ENGINE.L F@ 0.5 F* ENGINE.Z F@ F+ Point4 16 + F!

      Point1 glVertex3dv
      Point2 glVertex3dv
      Point3 glVertex3dv
      Point4 glVertex3dv
    glEnd
  LOOP
 
  0x7FFFFFFF 0 0 glColor3i
  40 0 DO
    GL_TRIANGLES glBegin
      I S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point1 F!
      I S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point1 8 + F!
      ENGINE.L F@ -0.5 F* ENGINE.Z F@ F+ Point1 16 + F!

      I 1 + S>F 40.0 F/ 2.0 F* PI F* FCOS ENGINE.DIAMETER F@ F* ENGINE.X F@ F+ Point2 F!
      I 1 + S>F 40.0 F/ 2.0 F* PI F* FSIN ENGINE.DIAMETER F@ F* ENGINE.Y F@ F+ Point2 8 + F!
      ENGINE.L F@ -0.5 F* ENGINE.Z F@ F+ Point2 16 + F!

      0.0 ENGINE.X F@ F+ Point3 F!
      0.0 ENGINE.Y F@ F+ Point3 8 + F!
      ENGINE.L F@ 0.5 F* ENGINE.Z F@ F+ Point3 16 + F!

      Point1 glVertex3dv
      Point2 glVertex3dv
      Point3 glVertex3dv
    glEnd
  LOOP
;

: DRAW-HULL
  0x3FFFFFFF DUP DUP glColor3i
  -0.3 Point1 F! 0.1 Point1 8 + F! 0.2 Point1 16 + F!
  -0.2 Point2 F! 0.1 Point2 8 + F! 0.7 Point2 16 + F!
   0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
   0.3 Point4 F! 0.1 Point4 8 + F! 0.2 Point4 16 + F!
  GL_QUADS glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
    Point4 glVertex3dv
  glEnd
  -0.3 Point1 F! -0.1 Point1 8 + F! 0.2 Point1 16 + F!
  -0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
   0.2 Point3 F! -0.1 Point3 8 + F! 0.7 Point3 16 + F!
   0.3 Point4 F! -0.1 Point4 8 + F! 0.2 Point4 16 + F!
  GL_QUADS glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
    Point4 glVertex3dv
  glEnd

  -0.3 Point1 F! -0.1 Point1 8 + F! 0.2 Point1 16 + F!
  -0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
  -0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
  -0.3 Point4 F! 0.1 Point4 8 + F! 0.2 Point4 16 + F!
  GL_QUADS glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
    Point4 glVertex3dv
  glEnd
  0.3 Point1 F! -0.1 Point1 8 + F! 0.2 Point1 16 + F!
  0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
  0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!
  0.3 Point4 F! 0.1 Point4 8 + F! 0.2 Point4 16 + F!
  GL_QUADS glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
    Point4 glVertex3dv
  glEnd

  0x7FFFFFFF DUP DUP glColor3i

  0.0 Point1 F! 0.0 Point1 8 + F! 1.2 Point1 16 + F!
  0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
  0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd

  0.0 Point1 F! 0.0 Point1 8 + F! 1.2 Point1 16 + F!
  -0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
  -0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd

  0 0x3FFFFFFF DUP glColor3i

  0.0 Point1 F! 0.0 Point1 8 + F! 1.2 Point1 16 + F!
  -0.2 Point2 F! 0.1 Point2 8 + F! 0.7 Point2 16 + F!
  0.2 Point3 F! 0.1 Point3 8 + F! 0.7 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd
 
  0x3FFFFFFF DUP DUP glColor3i

  0.0 Point1 F! 0.0 Point1 8 + F! 1.2 Point1 16 + F!
  -0.2 Point2 F! -0.1 Point2 8 + F! 0.7 Point2 16 + F!
  0.2 Point3 F! -0.1 Point3 8 + F! 0.7 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd


  0x7FFFFFFF DUP DUP glColor3i

  -0.5 Point1 F! 0.0 Point1 8 + F! 0.3 Point1 16 + F!
  -0.2 Point2 F! 0.0 Point2 8 + F! 0.7 Point2 16 + F!
  -0.25 Point3 F! 0.0 Point3 8 + F! 0.3 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd

  0.5 Point1 F! 0.0 Point1 8 + F! 0.3 Point1 16 + F!
  0.2 Point2 F! 0.0 Point2 8 + F! 0.7 Point2 16 + F!
  0.25 Point3 F! 0.0 Point3 8 + F! 0.3 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd

;

: DRAW-FIRE
  0 0x7FFFFFFF DUP glColor3i

  -0.21 Point1 F! -0.01 Point1 8 + F! 0.9 Point1 16 + F!
  -0.21 Point2 F! 0.01 Point2 8 + F! 0.9 Point2 16 + F!
  -0.2 Point3 F! 0.0 Point3 8 + F! 1.2 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd

  -0.19 Point1 F! -0.01 Point1 8 + F! 0.9 Point1 16 + F!
  -0.19 Point2 F! 0.01 Point2 8 + F! 0.9 Point2 16 + F!
  -0.2 Point3 F! 0.0 Point3 8 + F! 1.2 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd

  -0.21 Point1 F! 0.01 Point1 8 + F! 0.9 Point1 16 + F!
  -0.19 Point2 F! 0.01 Point2 8 + F! 0.9 Point2 16 + F!
  -0.2 Point3 F! 0.0 Point3 8 + F! 1.2 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd

  -0.21 Point1 F! -0.01 Point1 8 + F! 0.9 Point1 16 + F!
  -0.19 Point2 F! -0.01 Point2 8 + F! 0.9 Point2 16 + F!
  -0.2 Point3 F! 0.0 Point3 8 + F! 1.2 Point3 16 + F!

  GL_TRIANGLES glBegin
    Point1 glVertex3dv
    Point2 glVertex3dv
    Point3 glVertex3dv
  glEnd
;

: TEST
  0 0 700 700 glViewPort
  glPushMatrix


  GL_DEPTH_TEST glEnable
  GL_DEPTH_BUFFER_BIT glClear

  GL_LIGHTING glEnable
  GL_LIGHT0 glEnable
  GL_LIGHT1 glEnable
  GL_COLOR_MATERIAL glEnable
  GL_LINE_SMOOTH glEnable

  0 0x7FFFFFFF 0 glColor3i

  NX F@ ROTATEANGLE SF!
  1.0 glX SF!
  0.0 glY SF!
  0.0 glZ SF!
  3DROTATE

  NY F@ ROTATEANGLE SF! // -120
  0.0 glX SF!
  1.0 glY SF!
  0.0 glZ SF!
  3DROTATE

  NZ F@ ROTATEANGLE SF! // 100
  0.0 glX SF!
  0.0 glY SF!
  1.0 glZ SF!
  3DROTATE


  0x3FFFFFFF DUP DUP glColor3i

   -0.2 ENGINE.X F!
   0.0 ENGINE.Y F!
   0.0 ENGINE.Z F!
   DRAW-ENGINE

   0.0 ENGINE.X F!
   0.0 ENGINE.Y F!
   0.0 ENGINE.Z F!
   DRAW-ENGINE

   0.2 ENGINE.X F!
   0.0 ENGINE.Y F!
   0.0 ENGINE.Z F!
   DRAW-ENGINE
   
   DRAW-HULL
   
   DRAW-FIRE

  glPopMatrix
;

' TEST TO 3D

' X+ TO K_UP
' X- TO K_DOWN
' Y+ TO K_LEFT
' Y- TO K_RIGHT
' Z+ TO K_PGUP
' Z- TO K_PGDOWN

Автор:  вопрос [ Чт май 06, 2010 17:49 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

Код:
  250 VALUE PLANET_X
  250 CONSTANT PLANET_Y
100  TIMER_INTERVAL !
: p

700 10 DO 700 10 DO

   PLANET_X I - DUP *
   PLANET_Y J - DUP * + 8000 <        \ сама планета   
   
   IF
      I  J 
        50 50 141 
           RGB   
      \ готово пиксел
      
      J PLANET_Y >
      
      
      IF
      
      PLANET_X I - DUP *
        PLANET_Y J - 6 * DUP *
        + DUP 28700 < SWAP 14200 > AND
          IF DROP 250  PLANET_X  I - ABS 240 MOD PLANET_Y J - I * 255 MOD RGB THEN
      
      PLANET_X I - DUP *
        PLANET_Y J - 6 * DUP *
        + DUP 50700 < SWAP 34200 > AND
          IF DROP 250  PLANET_X  I - ABS 240 MOD PLANET_Y J - I * 255 MOD RGB THEN
      THEN 
   ELSE
      
      I J 0   
      
      
      PLANET_X I - DUP *
        PLANET_Y J - 6 * DUP *
        + DUP 28700 < SWAP 14200 > AND
          IF DROP 250  PLANET_X  I - ABS 240 MOD PLANET_Y J - I * 255 MOD RGB THEN
      
      PLANET_X I - DUP *
        PLANET_Y J -  6 * DUP *
        + DUP 50700 < SWAP 34200 > AND
          IF DROP 250  PLANET_X  I - ABS 240 MOD PLANET_Y J - I * 255 MOD RGB THEN
      
      
      
   THEN
PIXEL
LOOP LOOP

PLANET_X 2 + DUP TO PLANET_X   PLANET_X 500 =
IF ['] NOOP TO <TIMER> THEN
;

' p TO <TIMER>

Автор:  вопрос [ Пт май 07, 2010 00:51 ]
Заголовок сообщения:  Re: Конкурс: рисуем космос

А. ну да, я не сказал, это алгоритм генерации "сатурна"
меняя коэффициенты или вводя новые можно изменять вид
вот более выразительно
Код:
  250 VALUE PLANET_X
  250 CONSTANT PLANET_Y
100  TIMER_INTERVAL !
: p

500 90 DO 700 10 DO

   PLANET_X I - DUP *
   PLANET_Y J - DUP * + 8000 <        \ сама планета   
   
   IF
   I  J 
      50 PLANET_X 90 + I - 4 / 25 * 18 / +
      50 PLANET_Y 90 + J - 2
       /  255 MOD +
      141 
          RGB   
   \ готово пиксел
   
   J PLANET_Y >
   
   
   IF
   
   PLANET_X I - DUP *
      PLANET_Y J - 9 * 2 / DUP *
      + DUP 28700 < SWAP 14200 > AND
         IF DROP 250  PLANET_X  I - ABS 240 MOD PLANET_Y J - I * 255 MOD RGB THEN
   
   PLANET_X I - DUP *
      PLANET_Y J - 9 * 2 / DUP *
      + DUP 50700 < SWAP 34200 > AND
         IF DROP 250  PLANET_X  I - ABS 240 MOD PLANET_Y J - I * 255 MOD RGB THEN
   THEN 
   ELSE
   
   I J 0    
   
   
   PLANET_X I - DUP *
      PLANET_Y J - 9 * 2 /  DUP *
      + DUP 28700 < SWAP 14200 > AND
         IF DROP 250  PLANET_X  I - ABS 240 MOD PLANET_Y J - I * 255 MOD RGB THEN
   
   PLANET_X I - DUP *
      PLANET_Y J -  18 * 4 / DUP *
      + DUP 50700 < SWAP 34200 > AND
         IF DROP 250  PLANET_X  I - ABS 240 MOD PLANET_Y J - I * 255 MOD RGB THEN
   
   
   
   THEN
PIXEL
LOOP LOOP

PLANET_X 2 + DUP TO PLANET_X   PLANET_X 500 =
IF ['] NOOP TO <TIMER> THEN
;

' p TO <TIMER>


ps у Хищника непонятно, что делают клавиши

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/