Toch nog een vraag aan @ukster. Begrijp je deze code en kun jij die omzetten in wiskunde (het gaat om het stukje coördinaten berekenen)?
Mij lukt het niet om dat in wiskunde om te zetten en ik zal de code weer moeten analyseren om te begrijpen wat ik lang geleden geprogrammeerd heb. Er zitten erg veel lussen in lussen en dat was om het hele x, y, z veld voor elk individuele 'dimensional basic' in tijdstappen als één geheel te kunnen benaderen. Een wiskundige descriptie is wellicht handig, ook voor discussie hier op het forum. Alleen als je zin hebt natuurlijk.
Het is het deel van het programma dat de banen van maximaal 250 interacterende 'dimensional basics' berekend in een drie dimensionale ruimte.
De regels zijn als volgt:
Code: Selecteer alles
{ // Bestand voor co”rdinaten openen.
bestand=fopen(b_naam,"w");
fprintf(bestand, "%d %d %f %f %f %f", stap, deel, r_o, r_n, t_frag, grens);
for(t1=0;t1<deel;t1++)
fprintf(bestand, " %f %f %f", x3[t1][1], y3[t1][1], z3[t1][1]);
// Co”rdinaten berekenen, schrijven naar disk en naar tekst-beeldscherm.
for(t1=0;t1<stap;t1++)
{ for(t2=0;t2<deel;t2++)
{ x3[t2][3]=0;
y3[t2][3]=0;
z3[t2][3]=0;
}
for(t2=0;t2<deel;t2++)
{ x3[t2][2]=x3[t2][1]-x3[t2][0];
y3[t2][2]=y3[t2][1]-y3[t2][0];
z3[t2][2]=z3[t2][1]-z3[t2][0];
for(t3=t2;t3<deel;t3++)
{ fzx=x3[t3][1]-x3[t2][1];
fzy=y3[t3][1]-y3[t2][1];
fzz=z3[t3][1]-z3[t2][1];
if(fzx!=0) { fzx=1/fzx; x3[t2][3]=x3[t2][3]+fzx;
x3[t3][3]=x3[t3][3]-fzx; }
if(fzy!=0) { fzy=1/fzy; y3[t2][3]=y3[t2][3]+fzy;
y3[t3][3]=y3[t3][3]-fzy; }
if(fzz!=0) { fzz=1/fzz; z3[t2][3]=z3[t2][3]+fzz;
z3[t3][3]=z3[t3][3]-fzz; }
}
x3[t2][0]=x3[t2][1];
y3[t2][0]=y3[t2][1];
z3[t2][0]=z3[t2][1];
x3[t2][1]=x3[t2][0]+x3[t2][2]+x3[t2][3];
y3[t2][1]=y3[t2][0]+y3[t2][2]+y3[t2][3];
z3[t2][1]=z3[t2][0]+z3[t2][2]+z3[t2][3];
}
for(t2=0;t2<deel;t2++)
fprintf(bestand, " %f %f %f", x3[t2][1], y3[t2][1], z3[t2][1]);
putchar(13); printf("%d",t1+1);
}
fclose(bestand);
b_test=1;
}