salve a tutti io devo fare un programma che consiste nella lettura di un tot di dati (3 valori per le posizioni e 3 per le velocità) da un file, quindi devo fare una restrizione di array per selezionarne solo alcuni (es 20 punti) e infine fare lo spline di sti punti con grafico, il mio programma per ora legge i dati e fa il grafico di tutti i punti delle x (nel file sono messi in ordine così: pos(x,y,z) vel(x,y,z), a coppie di 6 insomma, e per la grafica uso una particolare libreria (passe_par_tout.h)) quindi cerca di fare lo spline ma qualcosa nn funzia,
#include <iostream>
#include <fstream>
#include <passe_par_tout.h>
#define OFF 6
using namespace std;
int main (int narg,char**args,char**env)
{unsigned int
l;
double*posizione[3],*velocita[3],*dati;
ifstream ascii("ascii"),binario("/home/mancio/binario");
if(!ascii || !binario) {
perror("Errore");}
binario.seekg(0,ios::end),
l=binario.tellg();
l/= sizeof(double), l--;
double d;
binario.seekg(0,ios::beg),
binario.read(reinterpret_cast<char*>(&d),sizeof(do uble)),
cout <<"primo dato letto:" << d << '\n';
binario.seekg(sizeof(double),ios::beg),
cout <<"ho " << l << " dati\n";
dati=new double[l];
binario.read(reinterpret_cast<char*>(dati),l*sizeo f(double));
posizione[0]= dati,
posizione[1]= dati+1,
posizione[2]= dati+2,
velocita[0]= dati+3,
velocita[1]= dati+4,
velocita[2]= dati+5;
int i; /*
int T=20;
int j=0;
int K=20;
int passo=(l/OFF)/K;
double *pencapollax = new double [K+1];
for (i=0;i<(l/OFF);i++)
{if(i % passo==0)
{(pencapollax[j++]=dati[i]);}}
double *pencapollav = new double [K+1];
for (i=0;i<(l/OFF);i++)
{if(i % passo==0)
{(pencapollav[j++]=dati[i+3]);}}
double **coef ;
coef = new double * [K];
for(j=0; j < K; j++) coef[j] = new double[4];
//primo polinomio:
coef[0][0]= pencapollax[0];
coef[0][1]= pencapollav[0];
coef[0][2]= (-2*pencapollav[0])/(T/K) -(pencapollav[1]/(T/K)) +(3*pencapollax[1]/((T/K)*(T/K))) - (3*pencapollax[0]/((T/K)*(T/K)));
coef[0][3]= (pencapollav[0]*(T/K)+2*pencapollax[0]-2*pencapollax[1]+pencapollav[1]*(T/K))/((T/K)*(T/K)*(T/K));
//coeff successivi:
for(i=0;i<(K-1);i++){
double Qa=coef[i][0]+coef[i][1]*(T/K)+coef[i][2]*((T/K)*(T/K))+coef[i][3]*((T/K)*(T/K)*(T/K));
double Qb=coef[i][1]+2*coef[i][2]*(T/K)+3*coef[i][3]*((T/K)*(T/K));
double Qc=pencapollax[i+1];
double Qd=2*coef[i][2]+6*coef[i][3]*(T/K);
coef[i+1][3]=(((T/K)*Qb+Qa-Qc+(0.5)*(T/K)*Qd))/(3*((T/K)*(T/K))-(4*T*T*T)/(K*K*K));
coef[i+1][2]= -(((T/K)*Qb+Qa-Qc+(4*((T*T*T)/(K*K*K))*coef[i+1][3])/(T/K)));
coef[i+1][1]= Qb-(2*(T/K)*coef[i+1][2])-3*((T/K)*(T/K))*coef[i+1][3];
coef[i+1][0]= Qa-((T/K)*coef[i+1][1])-((T/K)*(T/K))*coef[i+1][2]-(((T/K)*(T/K)*(T/K))*coef[i+1][3]);}
for(i=0;i<(K-1);i++)
{cout << coef[i][0]<<" "<<coef[i][1]<<" "<<coef[i][2]<<" "<<coef[i][3]<<endl;}
*/
//rappresentazione grafica,andamento della coordinata X
int L, A;
double X[]= {0,0,1,1};
m_startg(" ",&(L=600),&(A=600)),
m_window(&(L=0),&(A=0));
l = l/6;
for(i=0;i<l;i++)
{if (posizione[0][i*OFF] < X[1]) X[1]= posizione[0][i*OFF];
if (posizione[0][i*OFF] > X[3]) X[3]= posizione[0][i*OFF];
};
X[2]= X[1]- 0.05*(X[3]-X[1]),
X[3] += 0.05*(X[3]-X[1]),
X[1]=X[2],
X[0]=0, X[2]=l;
m_frame(X,X+1,X+2,X+3);
X[0]=0, X[1]= posizione[0][i*OFF],
m_move(X);
for(i=0;i<l;i+=1000)
X[0]=i, X[1]=posizione[0][i*OFF],
m_line(X);
m_wait_for_events(&(L=999));
};
l'errore è nella parte commentata ma nn lo trovo! credo che sia nel modo in cui ho messo i punti negli array, spero qualcuno mi possa aiutare, grazie per l'attenzione