private Vector calculateReflectedVec(Vector light, Vector normal) { float up = VectorOperations.ScalarMultiplication(light, normal); float bottom = VectorOperations.ScalarMultiplication(normal, normal); float division = up / bottom; Vector right = new Vector(2 * division * normal.X, 2 * division * normal.Y, 2 * division * normal.Z); Vector reflectedVec = VectorOperations.Diff(light, right); return(reflectedVec); }
private Vector calculateLight(Vector colorVecM, Vector colorVecL, Vector vecLight, Vector vecNormal, Vector vecReflected, Vector vecViewer, float shining) { float r = colorVecM.X * colorVecL.X + VectorOperations.ScalarMultiplication(vecLight, vecNormal) + (float)Math.Pow((VectorOperations.ScalarMultiplication(vecReflected, vecViewer)), shining); float g = colorVecM.Y * colorVecL.Y + VectorOperations.ScalarMultiplication(vecLight, vecNormal) + (float)Math.Pow((VectorOperations.ScalarMultiplication(vecReflected, vecViewer)), shining); float b = colorVecM.Z * colorVecL.Z + VectorOperations.ScalarMultiplication(vecLight, vecNormal) + (float)Math.Pow((VectorOperations.ScalarMultiplication(vecReflected, vecViewer)), shining); r = (r > 1) ? 1.0f : r; g = (g > 1) ? 1.0f : g; b = (b > 1) ? 1.0f : b; return(new Vector(r, g, b)); }