コード例 #1
0
        public void Illuminate_WithLightOffsetBy45Degrees_ExpectCorrectIlluminatedColor()
        {
            //arrange
            var color            = new Color(1, 1, 1);
            var material         = new PhongMaterial(color, 0.1, 0.9, 0.9, 200.0);
            var illuminatedPoint = new Point3D(0, 0, 0);
            var eyeVector        = new Vector3D(0, 0, -1);
            var normalVector     = new Vector3D(0, 0, -1);
            var lightPosition    = new Point3D(0, 10, -10);
            var lightIntensity   = new Color(1, 1, 1);
            var lightSource      = new PointLightSource(lightPosition, lightIntensity);

            //act
            var illuminatedColor = material.Illuminate(illuminatedPoint, eyeVector, normalVector, lightSource);

            //assert
            Assert.AreEqual(new Color(0.73639610, 0.73639610, 0.73639610), illuminatedColor);
        }
コード例 #2
0
        public void Illuminate_WithLightBehindSurface_ExpectNoIllumination()
        {
            //arrange
            var color            = new Color(1, 1, 1);
            var material         = new PhongMaterial(color, 0.1, 0.9, 0.9, 200.0);
            var illuminatedPoint = new Point3D(0, 0, 0);
            var eyeVector        = new Vector3D(0, 0, -1);
            var normalVector     = new Vector3D(0, 0, -1);
            var lightPosition    = new Point3D(0, 0, 10);
            var lightIntensity   = new Color(1, 1, 1);
            var lightSource      = new PointLightSource(lightPosition, lightIntensity);

            //act
            var illuminatedColor = material.Illuminate(illuminatedPoint, eyeVector, normalVector, lightSource);

            //assert
            Assert.AreEqual(new Color(0.1, 0.1, 0.1), illuminatedColor);
        }
コード例 #3
0
        public void Illuminate_WithLightBehindCameraAndIlluminatedPointInShadow_ExpectAmbientColor()
        {
            //arrange
            var color            = new Color(1, 1, 1);
            var material         = new PhongMaterial(color, 0.1, 0.9, 0.9, 200.0);
            var illuminatedPoint = new Point3D(0, 0, 0);
            var eyeVector        = new Vector3D(0, 0, -1);
            var normalVector     = new Vector3D(0, 0, -1);
            var lightPosition    = new Point3D(0, 0, -10);
            var lightIntensity   = new Color(1, 1, 1);
            var lightSource      = new PointLightSource(lightPosition, lightIntensity);
            var isInShadow       = true;

            //act
            var illuminatedColor = material.Illuminate(illuminatedPoint, eyeVector, normalVector, lightSource, isInShadow);

            //assert
            Assert.AreEqual(new Color(0.1, 0.1, 0.1), illuminatedColor);
        }