package Ġnet . d ink la . ray tracer . examples Ċ Ċ import Ġnet . d ink la . ray tracer . cam eras . render . Render ers Ċ import Ġnet . d ink la . ray tracer . colors . Color Ċ import Ġnet . d ink la . ray tracer . world . Builder Ċ import Ġnet . d ink la . ray tracer . world . World Definition Ċ import Ġkotlin . random . Random Ċ Ċ object ĠWorld 4 2 Ġ: ĠWorld Definition Ġ{ ĊĊĠĠĠ Ġconst Ġval Ġhas Shadow s Ġ= Ġtrue ĊĠĠĠ Ġconst Ġval ĠNUM Ġ= Ġ 2 5 ĊĠĠĠ Ġprivate Ġconst Ġval Ġcolumn Ġ= ĠNUM Ġ/ Ġ 2 Ġ- Ġ 0 . 1 5 ĊĠĠĠ Ġval Ġr Ġ= ĠRandom . Default ĊĊĠĠĠ Ġoverride Ġfun Ġworld () Ġ= ĠBuilder . build (" World 4 2 ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġview Plane ( resolution = ĠResolution . RESOL UTION _ 1 0 8 0 , Ġmax Depth = Ġ 1 0 ) Ċ Ċ // ĠĠĠ Ġcamera ( direction = Ġ 1 0 0 0 , Ġeye = Ġp (- NUM , Ġcolumn + 1 , ĠNUM * 2 ), Ġlook At = Ġp ( column , Ġcolumn , ĠNUM / 2 ), Ġtype = ĠIter ative Pin hole ) Ċ // ĠĠĠ Ġcamera ( direction = Ġ 1 0 0 0 , Ġeye = Ġp (- 5 , ĠNUM Ġ+ Ġ 5 , ĠNUM Ġ+ Ġ 5 ), Ġlook At = Ġp ( column , ĠNUM Ġ- Ġ 5 , Ġcolumn ), Ġtype = ĠIter ative Pin hole ) Ċ // ĠĠĠ Ġcamera ( direction = Ġ 1 0 0 0 , Ġeye = Ġp (- 5 , ĠNUM Ġ+ Ġ 5 , ĠNUM Ġ+ Ġ 5 ), Ġlook At = Ġp ( column , ĠNUM Ġ- Ġ 1 0 , Ġcolumn ), Ġtype = ĠIter ative Pin hole ) Ċ // ĠĠĠ Ġcamera ( direction = Ġ 1 0 0 0 , Ġeye = Ġp (- 5 , ĠNUM Ġ+ Ġ 5 , ĠNUM Ġ+ Ġ 5 ), Ġlook At = Ġp ( column , ĠNUM Ġ- ĠNUM / 5 , Ġcolumn ), Ġtype = ĠPin hole Par ) Ċ // ĠĠĠĠĠĠĠ Ġcamera ( d = Ġ 1 0 0 0 . 0 , Ġeye = Ġp (- 1 , ĠNUM , ĠNUM Ġ+ Ġ 5 ), Ġlook At = Ġp ( column , ĠNUM Ġ- ĠNUM / 5 , Ġcolumn ), Ġnum Threads = Ġ 3 0 ) ĊĠĠĠĠĠĠĠ Ġcamera ( d Ġ= Ġ 1 0 0 0 . 0 , Ġeye Ġ= Ġp (- 1 , ĠNUM , ĠNUM Ġ+ Ġ 5 ), Ġlook At Ġ= Ġp ( column , ĠNUM Ġ- ĠNUM Ġ/ Ġ 5 . 0 , Ġcolumn ), Ġengine Ġ= ĠRender ers . COR OUT INE ) ĊĊĠĠĠĠĠĠĠ Ġambient Light ( color Ġ= ĠColor . WHITE , Ġls Ġ= Ġ 0 . 5 ) ĊĊĠĠĠĠĠĠĠ Ġlights Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġpoint Light ( location Ġ= Ġp ( NUM , ĠNUM Ġ* Ġ 2 , ĠNUM Ġ* Ġ 2 ), Ġls Ġ= Ġ 1 . 0 , Ġshadow s Ġ= Ġhas Shadow s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoint Light ( location Ġ= Ġp ( NUM , ĠNUM Ġ* Ġ 2 , ĠNUM Ġ* Ġ 2 ), Ġls Ġ= Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmaterials Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreflect ive ( id Ġ= Ġ" grey ", Ġks Ġ= Ġ 1 . 0 , Ġcd Ġ= Ġc ( 0 . 1 , Ġ 0 . 1 , Ġ 0 . 1 ), Ġka Ġ= Ġ 0 . 0 , Ġk d Ġ= Ġ 1 . 0 , Ġexp Ġ= Ġ 1 0 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠNUM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil ĠNUM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 0 Ġuntil ĠNUM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Ġ= Ġr . next Double () Ġ* Ġ 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ġ= Ġc ( r . next Double (), Ġr . next Double (), Ġr . next Double ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġka Ġ= Ġ 0 . 5 Ġ// Ġ 0 . 2 Ġ+ Ġr . next Float () Ġ* Ġ 0 . 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk d Ġ= Ġ 0 . 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġks Ġ= Ġ 1 . 0 Ġ// Ġr . next Float () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkr Ġ= Ġ 1 . 0 Ġ// Ġr . next Float () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ph ong ( id = Ġ" c $ i -$ j -$ k ", Ġks = Ġ 1 . 0 , Ġcd = Ġcol , Ġka = Ġ 1 . 0 , Ġk d = Ġ 1 . 0 , Ġexp = Ġexp ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreflect ive ( id = Ġ" c $ i -$ j -$ k ", Ġks = Ġ 1 . 0 , Ġcd = Ġcol , Ġka = Ġ 1 . 0 , Ġk d = Ġ 1 . 0 , Ġexp = Ġexp , Ġkr = Ġkr ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreflect ive ( id = Ġ" c $ i -$ j -$ k ", Ġks = Ġks , Ġcd = Ġcol , Ġka = Ġka , Ġk d = Ġk d , Ġexp = Ġexp , Ġkr = Ġkr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreflect ive ( id Ġ= Ġ" c $ i -$ j -$ k ", Ġka Ġ= Ġka , Ġk d Ġ= Ġk d , Ġcd Ġ= Ġcol , Ġks Ġ= Ġks , Ġcs Ġ= Ġcol , Ġkr Ġ= Ġkr , Ġcr Ġ= Ġcol , Ġexp Ġ= Ġexp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobjects Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane ( material Ġ= Ġ" grey ", Ġpoint Ġ= Ġp ( 0 , Ġ 0 , Ġ- 5 ), Ġnormal Ġ= Ġn ( 0 , Ġ 0 , Ġ 1 )) ĠĠĠ Ġ// Ġhint en ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane ( material Ġ= Ġ" grey ", Ġpoint Ġ= Ġp ( 0 , Ġ- 5 , Ġ 0 ), Ġnormal Ġ= Ġn ( 0 , Ġ 1 , Ġ 0 )) ĠĠĠ Ġ// Ġunt en ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane ( material Ġ= Ġ" grey ", Ġpoint Ġ= Ġp ( NUM Ġ+ Ġ 5 , Ġ 0 , Ġ 0 ), Ġnormal Ġ= Ġn (- 1 , Ġ 0 , Ġ 0 )) ĠĠĠ Ġ// Ġre ch ts Ġhint en ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane ( material Ġ= Ġ" grey ", Ġpoint Ġ= Ġp ( 0 , ĠNUM Ġ* Ġ 2 Ġ+ Ġ 5 , Ġ 0 ), Ġnormal Ġ= Ġn ( 0 , Ġ- 1 , Ġ 0 )) Ġ// Ġob en ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane ( material Ġ= Ġ" grey ", Ġpoint Ġ= Ġp ( 0 , Ġ 0 , ĠNUM Ġ* Ġ 2 Ġ+ Ġ 5 ), Ġnormal Ġ= Ġn ( 0 , Ġ 0 , Ġ- 1 )) Ġ// Ġre ch ts Ġvor ne ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane ( material Ġ= Ġ" grey ", Ġpoint Ġ= Ġp (- NUM Ġ- Ġ 5 , Ġ 0 , Ġ 0 ), Ġnormal Ġ= Ġn ( 1 , Ġ 0 , Ġ 0 )) Ġ// Ġlinks ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġsphere ( center = Ġp ( 0 , Ġ 0 , Ġ 0 ), Ġradius = Ġ 0 . 2 5 , Ġmaterial = Ġ" r ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠNUM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil ĠNUM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 0 Ġuntil ĠNUM ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsphere ( center Ġ= Ġp ( i , Ġj , Ġk ), Ġradius Ġ= Ġ 0 . 2 5 , Ġmaterial Ġ= Ġ" c $ i -$ j -$ k ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ