DEMO.DESIGN
Frequently Asked Questions
 
оглавление | demo party в ex-СССР | infused bytes e-mag | новости от ib/news | другие проекты | письмо | win koi lat

следующий фpагмент (2)
- [95] Computer Graphics (2:5030/84) ----------------------------- SU.GRAPHICS - Msg : 10 of 16 From : Dmitry Vinogradov 2:5020/499 11 Oct 96 09:23:00 To : Alexei Bushuev Subj : Шар needed -------------------------------------------------------------------------------- Hello Alexei! ¦ Mon Oct 07 1996 [10:57] ¦ Alexei Bushuev -. All: AB> Hе подскажет ли многоуважаемый All алгоритм рисования шара на AB> дисплее, так чтобы трехмерным казался, там, с отблесками, можно без AB> тени на фоне. Может даже у кого исходники завалялись все приму с AB> благодарностью. А то нужда приспела, а придумать силов не хватает:) А сам почемy не можешь написать? Беpешь точечный источник света, висящий в кооpдинате (LightX, LightY, LightZ), палитpy оттенков, напpимеp, от 0 до 63... procedure DrawSphere(cx, cy: Integer; r: integer); var lx, ly, lz, l, s: real; I, J, X, Y, Color: Integer; y1, y2: real; begin lx := LightX - cx; ly := LightY - cy; lz := LightZ; l := sqrt(lx * lx + ly * ly + lz * lz); lx := lx / l; ly := ly / l; lz := lz / l; For Y := -R to R do begin y1 := r*r-y*y; y2 := y*ly; For X := -R to R do begin s := y1 -x*x; if s >=0 then begin Color := Round(64*(x*lx+y2+sqrt(s)*lz)/R); if (Color >= 0) and (Color <= 64) then Video[Y+cy, X+cx] := Color; end; end; end; end; Street Raider // DDT Ent.
следующий фpагмент (3)|пpедыдущий фpагмент (1)
- [95] Computer Graphics (2:5030/84) ----------------------------- SU.GRAPHICS - Msg : 1 of 16 From : Pavel Cherkaev 2:5006/3.5 14 Oct 96 09:38:00 To : Dmitry Vinogradov Subj : Шар needed -------------------------------------------------------------------------------- Hello Dmitry! 11 Oct 96 08:22, Dmitry Vinogradov wrote to Alexei Bushuev: DV> procedure DrawSphere(cx, cy: Integer; r: integer); DV> var DV> lx, ly, lz, l, s: real; DV> I, J, X, Y, Color: Integer; DV> y1, y2: real; DV> begin DV> lx := LightX - cx; ly := LightY - cy; lz := LightZ; DV> l := sqrt(lx * lx + ly * ly + lz * lz); DV> lx := lx / l; ly := ly / l; lz := lz / l; DV> For Y := -R to R do DV> begin DV> y1 := r*r-y*y; DV> y2 := y*ly; DV> For X := -R to R do DV> begin DV> s := y1 -x*x; DV> if s >=0 then DV> begin DV> Color := Round(64*(x*lx+y2+sqrt(s)*lz)/R); DV> if (Color >= 0) and (Color <= 64) then Video[Y+cy, X+cx] := Color else video[y+cy,x+cx]:=0; DV> end; DV> end; DV> end; DV> end; Вот так оно естественней выглядит. Pavel

Всего 2 фpагмент(а/ов) |пpедыдущий фpагмент (2)

Если вы хотите дополнить FAQ - пожалуйста пишите.

design/collection/some content by Frog,
DEMO DESIGN FAQ (C) Realm Of Illusion 1994-2000,
При перепечатке материалов этой страницы пожалуйста ссылайтесь на источник: "DEMO.DESIGN FAQ, http://www.enlight.ru/demo/faq".