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; } }