Esempio n. 1
0
Vector4f specularTerm(Vector4f ks, Vector4f intens, Vector4f normal, Vector4f light, Vector4f viewer, float p){
    
    Vector4f refl = light*(float)(-1) + normal*((float)2*(light.adjoint()*normal));
    float dotProduct = refl.adjoint()*viewer;
    dotProduct = max(dotProduct,(float)0);
    if (dotProduct==(float)0){
        return Vector4f(0,0,0,0);
    }else{
        return times(ks,intens)* pow(dotProduct, p);
    }
};
Esempio n. 2
0
// Shading
Vector4f diffuseTerm(Vector4f kd, Vector4f intens, Vector4f normal, Vector4f light){
    float dotProduct = light.adjoint()*normal;
    dotProduct = max(dotProduct,(float)0);
    if (dotProduct == (float)0) {
        return Vector4f(0,0,0,0);
    } 
    else{
        return times(kd,intens).adjoint()*dotProduct;
    }
};
Esempio n. 3
0
// Shading
Color diffuseTerm(Color kd, Color intens, Vector4f normal, Vector4f light){
    float dotProduct = light.adjoint()*normal;
    dotProduct = max(dotProduct,(float)0);
    if (dotProduct == (float)0) {
        return Color(0.0f, 0.0f, 0.0f);
    } 
    else{
        return (kd*intens)*dotProduct;
    }
};
Esempio n. 4
0
Vector4f find_reflection(Ray ray, Vector4f normal){

    // if (ray.direction[3] != 0 || ray.origin[3] != 1){
    //     cout << ray.direction << endl;
    //     cout << ray.origin << endl;
    // }

    Vector4f direction = ray.direction;
    float c = -normal.adjoint()*direction;
    float divider = normal[0]*normal[0]+normal[1]*normal[1]+normal[2]*normal[2];
    c = c/divider;
    Vector4f Reflect = direction + (2*normal*c);


    return Reflect;
};