Example #1
0
        protected override Tuple LocalNormalAt(Tuple localPoint, Intersection hit)
        {
            float dist = localPoint.X * localPoint.X + localPoint.Z * localPoint.Z;

            if (dist < 1)
            {
                if (localPoint.Y >= Maximum - Constants.floatEps)
                {
                    return(Tuple.Vector(0, 1, 0));
                }
                else if (localPoint.Y <= Minimum + Constants.floatEps)
                {
                    return(Tuple.Vector(0, -1, 0));
                }
            }

            return(Tuple.Vector(localPoint.X, 0, localPoint.Z));
        }
Example #2
0
        private void ReadNormal(char[] contents)
        {
            var normal = Tuple.Vector(0, 0, 0);

            for (int i = 0; i < 3; ++i)
            {
                Token token = GetNextToken(contents);
                if (token.Type == TokenType.Number)
                {
                    normal[i] = float.Parse(token.Value);
                }
                else
                {
                    throw new FormatException($"{token.Value} is not a Number");
                }
            }

            Normals.Add(normal);
        }
Example #3
0
        protected override Tuple LocalNormalAt(Tuple localPoint, Intersection hit)
        {
            float absX = Abs(localPoint.X);
            float absY = Abs(localPoint.Y);
            float absZ = Abs(localPoint.Z);

            float maxc = Max(Max(absX, absY), absZ);

            if (Abs(absX - maxc) < Constants.floatEps)
            {
                return(Tuple.Vector(localPoint.X, 0, 0));
            }
            else if (Abs(absY - maxc) < Constants.floatEps)
            {
                return(Tuple.Vector(0, localPoint.Y, 0));
            }

            return(Tuple.Vector(0, 0, localPoint.Z));
        }
Example #4
0
 private static Tuple ReadVector(JToken jToken)
 {
     return(Tuple.Vector((float)jToken[0], (float)jToken[1], (float)jToken[2]));
 }
Example #5
0
 protected override Tuple LocalNormalAt(Tuple p, Intersection hit)
 {
     return(Tuple.Vector(0, 1, 0));
 }