Esempio n. 1
0
void splineShape::modifyControlPoint(int pointID, displacementStruct displacement)
{
    /*
     * Este metodo pretende implementar un movimiento basico de un punto de control:
     * Argumentos:
     *      - pointID: <unsigned int> identificador del punto sobre el que vamos a operar
     *      - displacement: 
     */

    
    double xdisplacement,ydisplacement;
    
    //Criterio, los puntos de control del borde de ataque y del borde de salida quedan fijos.
    if ( pointID == 0 or pointID == n-1 or pointID == 2*(n-1))//TODO anadir la condicion de pointID == 0
    {
        // There are fixed points.
        xdisplacement = 0.0;
        ydisplacement = 0.0;
    }
    
    else
    {
        xdisplacement = displacement.norm * cos(displacement.theta);
        ydisplacement = displacement.norm * sin(displacement.theta);
    }
    pts[pointID].x += xdisplacement;
    pts[pointID].y += ydisplacement;
    
   calcSplines();
   updateControlPoints();
}
void TerrainBlock::init(){

	// attach ground vertices to landscape height:
	if(!attachVertices()){
		Info << "\nTerrainBlock: Error attaching points.\n" << endl;
		throw;
	}

	// calculate the vertex-vertex splines:
	if(!calcSplines()){
		Info << "\nTerrainBlock: Error calculating splines.\n" << endl;
		throw;
	}

}