Exemple #1
0
 def getIllumination(self, surfNormV: np.ndarray, pos: np.ndarray,
                     cameraPos: np.ndarray, shinyness: float):
     #diffuse
     lightDir = Ray.normalizeVector(
         self.getClosestPointOfLight(Ray(pos, surfNormV)) - pos)
     diffuse = self._phong.diffuse * np.dot(lightDir, surfNormV)
     #specular
     vectorFromCam = pos - cameraPos
     reflectedVector = vectorFromCam - 2 * (
         np.dot(vectorFromCam, surfNormV) * surfNormV)
     lightDir = Ray.normalizeVector(
         self.getClosestPointOfLight(Ray(pos, reflectedVector)) - pos)
     cameraDir = Ray.normalizeVector(cameraPos - pos)
     optReflAxis = Ray.normalizeVector(lightDir + cameraDir)
     specular = self._phong.specular * np.dot(surfNormV,
                                              optReflAxis)**shinyness
     return (diffuse, specular)
Exemple #2
0
 def norm(self):
     """Normal vector of surface
     """
     return Ray.normalizeVector(np.cross(self.dirVec1, self.dirVec2))