public float[,] GetForcesDiagram(AbstractCase ac, LineElement line, LineForceComponent component, int numPoints)
{
if (!model.HasResults) return null;
float[,] controlPoints = new float[numPoints, 2];
float[] controlPointsX = new float[1]; // requestXCtrlPts(load);
for (int i = 0, bufi = 0; i < numPoints; i++)
{
controlPoints[i,0] = i / (numPoints - 1f);
// Adjust control points
if ((bufi < controlPointsX.Length) && (controlPointsX[bufi] <= controlPoints[i, 0]))
controlPoints[i, 0] = controlPointsX[bufi++];
controlPoints[i, 1] = 0f; // controlPoints[i, 0] * (fdJ - fdI);
}
float fI, fJ;
getForcesDiagram(ac, line, component, controlPoints, out fI, out fJ);
for (int i = 0, bufi = 0; i < numPoints; i++)
{
// Los valores en los nodos se encuentran volteados. Del lado izquierdo positivo
// es arriba, mientras del lado derecho positivo es abajo, por lo que si se tienen
// dos valores positivos se debería pintar una recta con pendiente negativa y si
// se tienen dos negativos al revés. DeltaY = Y1 + Y2 (por el cambio de signo).
controlPoints[i, 1] += controlPoints[i, 0] * (fI + fJ) - fI;
}
return controlPoints;
}