package Ġnet . d ink la . ray tracer . objects . are al ights Ċ Ċ import Ġnet . d ink la . ray tracer . hits . Shade Ċ import Ġnet . d ink la . ray tracer . lights . IL ight Source Ċ import Ġnet . d ink la . ray tracer . materials . IM aterial Ċ import Ġnet . d ink la . ray tracer . math . Math Utils . PI Ċ import Ġnet . d ink la . ray tracer . math . Normal Ċ import Ġnet . d ink la . ray tracer . math . Point 3 D Ċ import Ġnet . d ink la . ray tracer . math . Vector 2 D Ċ import Ġnet . d ink la . ray tracer . math . Vector 3 D Ċ import Ġnet . d ink la . ray tracer . objects . Disk Ċ import Ġnet . d ink la . ray tracer . samp lers . Sampler Ċ Ċ class ĠDisk Light ( ĊĠĠĠĠĠĠĠ Ġval Ġsampler : ĠSampler , ĊĠĠĠĠĠĠĠ Ġcenter : ĠPoint 3 D , ĊĠĠĠĠĠĠĠ Ġradius : ĠDouble , ĊĠĠĠĠĠĠĠ Ġnormal : ĠNormal ) Ġ: ĠDisk ( center , Ġradius , Ġnormal ), ĠI Light Source Ġ{ ĊĊĠĠĠ Ġval Ġpdf Ġ= Ġ 1 . 0 Ġ/ Ġ( PI Ġ* Ġradius Ġ* Ġradius ) ĊĊĠĠĠ Ġoverride Ġfun Ġpdf ( sr : ĠSh ade ): ĠDouble Ġ= Ġpdf ĊĊĠĠĠ Ġoverride Ġfun Ġsample (): ĠPoint 3 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsp Ġ= Ġsampler . sample Unit Disk () ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠVector 2 D ( sp . x Ġ* Ġradius , Ġsp . y Ġ* Ġradius ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcenter Ġ+ ĠVector 3 D ( v . x , Ġv . y , Ġ 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Light Material (): ĠI Material Ġ= Ġmaterial !! Ċ Ċ } Ċ