Esempio n. 1
0
File: util.cpp Progetto: tfc2/if680
dVector ortogonalizacao(const dVector u, const dVector v)
{
    double escalar = produtoEscalar(u, v) / produtoEscalar(v, v);
    dVector vetor(u.size());
    for(int i = 0;i< u.size();i++)vetor[i]=u[i] - escalar*v[i];
    return vetor;
}
Esempio n. 2
0
vector<float> Calc::pontoIntersecao(vector<float> raioProjecao, Face face){
    float t;
    vector<float> normal = face.getNormal();

    t = produtoEscalar(normal, face.getVertice1().getPos());
    t = t/produtoEscalar(normal, raioProjecao);

    for(int i = 0; i < 4; i++)
        raioProjecao[i] = raioProjecao[i]*t;

    return raioProjecao;
}
Esempio n. 3
0
vector <Vetor> ortogonalizar (Vetor v, Vetor u) {
	vector <Vetor> ortogonais;
	double temp = (produtoEscalar(v,u)/produtoEscalar(v,v));

	u.x = u.x - (temp)*v.x;
	u.y = u.y - (temp)*v.y;
	u.z = u.z - (temp)*v.z;

	ortogonais.push_back(v);
	ortogonais.push_back(u);

	return ortogonais;
}
Esempio n. 4
0
bool Calc::interceptaFace(vector<float> pontoInter, Face face){
    vector<float> aresta1, aresta2, aresta3;
    vector<float> normal1, normal2, normal3;

    aresta1 =  face.getVertice1().getPos();
    aresta2 =  face.getVertice2().getPos();
    aresta3 =  face.getVertice3().getPos();

    normal1 = produtoVetorial(aresta2, aresta1);
    normal2 = produtoVetorial(aresta3, aresta2);
    normal3 = produtoVetorial(aresta1, aresta3);

    if((produtoEscalar(pontoInter, normal1) < 0) ||
            (produtoEscalar(pontoInter, normal2) < 0) ||
            (produtoEscalar(pontoInter, normal3) < 0))
        return false;

    return true;
}
Esempio n. 5
0
vector<float> Calc::coordMundoParaCam(Camera camera, Vertice vertice){
    vector < vector<float> > mat;

    mat.resize(4);
    for(int i = 0; i < 4; i++)
        mat[i].resize(4);

    for(int i = 0; i < 4; i++){
        switch(i){
        case(0):
            mat[i][0] = camera.getI()[0];
            mat[i][1] = camera.getI()[1];
            mat[i][2] = camera.getI()[2];
            mat[i][3] = (-1)*produtoEscalar(camera.getI(), camera.getPos());
            break;
        case(1):
            mat[i][0] = camera.getJ()[0];
            mat[i][1] = camera.getJ()[1];
            mat[i][2] = camera.getJ()[2];
            mat[i][3] = (-1)*produtoEscalar(camera.getJ(), camera.getPos());
            break;
        case(2):
            mat[i][0] = camera.getK()[0];
            mat[i][1] = camera.getK()[1];
            mat[i][2] = camera.getK()[2];
            mat[i][3] = (-1)*produtoEscalar(camera.getK(), camera.getPos());
            break;
        default:
            mat[i][0] = 0;
            mat[i][1] = 0;
            mat[i][2] = 0;
            mat[i][3] = 1;
            break;
        }
    }

    return produtoMatrizVetor(mat, vertice.getPos());
}