示例#1
0
PV3D* Malla::normalCaraNewell(Cara* cara){
    PV3D* n = new PV3D(0.0, 0.0, 0.0, 0);
    for (int i=0; i<cara->getNumVertices(); i++) {
        PV3D* vertActual= perfil[cara->getIndiceVerticeK(i)];
        PV3D* vertSiguiente= perfil[cara->getIndiceVerticeK((i+1) % cara->getNumVertices())];
        n->setCoordenadaX(n->getCoordenadaX() + ((vertActual->getCoordenadaY() - vertSiguiente->getCoordenadaY()) * (vertActual->getCoordenadaZ() + vertSiguiente->getCoordenadaZ())));
        n->setCoordenadaY(n->getCoordenadaY() + ((vertActual->getCoordenadaZ() - vertSiguiente->getCoordenadaZ()) * (vertActual->getCoordenadaX() + vertSiguiente->getCoordenadaX())));
        n->setCoordenadaZ(n->getCoordenadaZ() + ((vertActual->getCoordenadaX() - vertSiguiente->getCoordenadaX()) * (vertActual->getCoordenadaY() + vertSiguiente->getCoordenadaY())));
    }
    n->normalizarVector();
    return n;
}