- sclgeom [c+]
[..] La fonction [scl] airepolygonescl
Code
int airepolygone_xpl(){
scltracefa(§, ƒ, ∅);
scltracefc("scl-%s (%s) : %s\n\n", sclver(), sclsec(), temps_char(0));
int vna=3, vne=60;
double dvna=(double)vna, dvne=(double)vne;
int vnx = vne - vna + 1, vni;
double *vn=newtablin(vnx,dvna,dvne), dvn, dvi; int cvn, vo, vi;
int *mn = new int[vnx];
double **vx=new double*[vnx], **vy=new double*[vnx];
double *aire=new double[vnx];
double depi = scl2pi(), bx, by;
for(vni=0;vni<vnx;vni++){
cvn=(int)vn[vni]; vo=cvn+1; dvn=(double)cvn;
vx[vni]=new double[vo]; vy[vni]=new double[vo];
mn[vni] = vo;
for(vi=0;vi<cvn;vi++){
dvi=(double)vi;
vx[vni][vi]=cos(depi/dvn*dvi); vy[vni][vi]=sin(depi/dvn*dvi);
}
aire[vni] = airepolygone(cvn, vx[vni], vy[vni], &bx, &by);
scltracefc("vn[%d]=%d: %e, %e\n", vni, cvn, bx, by);
// On ferme le polygone pour l'affichage
vx[vni][cvn]=vx[vni][0]; vy[vni][cvn]=vy[vni][0];
}
scl::string_c imgname=scl::string_c(ƒ)+"-plgn.svg",
imgpath="./srt/"+imgname;
// le trait plein occupe moins de place en svg et emf
std::string linespec="-"; for(vni=1;vni<vnx;vni++){ linespec+=";-"; }
graf_dis(imgpath.c_str(), mn[0], vx[0], vy[0],
"curvex", vnx-1, &mn[1], &vx[1], &vy[1],
"axis", "equal", "subtitlex", imgname.c_str(),
"title", "Regular polygon",
"linespec", linespec.c_str(), "linespeca", "-a", ∅);
imgname.clear(); imgname=scl::string_c(ƒ)+".svg";
imgpath.clear(); imgpath="./srt/"+imgname;
graf_dis(imgpath.c_str(), vnx, vn, aire,
"subtitlex", imgname.c_str(), "xlabel", "Vertice number [N]",
"title", "Geometric approximation of π",
"grid", "on", "linespec", "-l", "linespeca", "-a", ∅);
//---------------------------------------------------------------------
//[>LIBÈRE MÉMOIRE]
//---------------------------------------------------------------------
imgpath.clear(); imgname.clear();
delete[] aire; aire=∅;
for(vni=0;vni<vnx;vni++){
delete[] vy[vni]; vy[vni]=∅; delete[] vx[vni]; vx[vni]=∅;
}
delete[] vy; vy=∅; delete[] vx; vx=∅;
delete[] mn; mn=∅; delete[] vn; vn=∅;
//---------------------------------------------------------------------
//[<LIBÈRE MÉMOIRE]
//---------------------------------------------------------------------
scltracefe(§, ƒ, ∅);
return 0;
}
/* ƒ décorée par
le 23-03-2025 22:21:41 */
Sortie
[>..\xpl\src\sclgeom.xpl.cpp.airepolygone_xpl]
scl-25.03 (gwin64) : 23-03-2025 22:21:41
vn[0]=3: -9.258709e-017, 1.139533e-016
vn[1]=4: -1.850372e-017, 0.000000e+000
vn[2]=5: -1.556477e-017, -7.782384e-018
vn[3]=6: -2.848834e-017, -4.273250e-017
vn[4]=7: 0.000000e+000, -2.704816e-017
vn[5]=8: -3.925231e-017, -1.308410e-017
vn[6]=9: -2.558815e-017, -2.558815e-017
vn[7]=10: -1.259216e-017, -3.148040e-018
vn[8]=11: 0.000000e+000, 0.000000e+000
vn[9]=12: 6.167906e-018, 1.850372e-017
vn[10]=13: 0.000000e+000, -4.594228e-018
vn[11]=14: 6.092388e-018, -3.046194e-017
vn[12]=15: -6.065749e-018, -1.516437e-017
vn[13]=16: 6.044068e-018, 0.000000e+000
vn[14]=17: 1.807854e-017, 0.000000e+000
vn[15]=18: 1.202250e-017, -7.514062e-018
vn[16]=19: -2.999327e-017, -6.223603e-017
vn[17]=20: 1.796379e-017, -2.844266e-017
vn[18]=21: 1.793616e-017, -1.718882e-017
vn[19]=22: 5.970755e-018, -2.239033e-018
vn[20]=23: 0.000000e+000, 2.907361e-017
vn[21]=24: 1.191548e-017, 2.234152e-017
vn[22]=25: -4.166668e-017, -2.604167e-017
vn[23]=26: -8.921456e-018, -8.847111e-017
vn[24]=27: -3.566049e-017, -3.863219e-017
vn[25]=28: -2.078874e-017, -1.670524e-017
vn[26]=29: -2.968125e-018, 4.600594e-017
vn[27]=30: 0.000000e+000, -5.710703e-017
vn[28]=31: 0.000000e+000, -6.301089e-017
vn[29]=32: -3.853156e-017, -2.889867e-017
vn[30]=33: -2.962827e-018, -1.629555e-017
vn[31]=34: -8.885362e-018, -6.367843e-017
vn[32]=35: 0.000000e+000, 6.291776e-018
vn[33]=36: 3.847952e-017, 5.216934e-017
vn[34]=37: -2.071412e-017, -7.490374e-017
vn[35]=38: 1.479210e-017, -1.996933e-017
vn[36]=39: 2.070415e-017, -1.441896e-017
vn[37]=40: 2.957104e-017, -3.585488e-017
vn[38]=41: 2.069562e-017, 1.330433e-017
vn[39]=42: -5.911943e-018, -3.011396e-017
vn[40]=43: 2.955464e-018, 2.345900e-017
vn[41]=44: -1.181996e-017, 1.865338e-017
vn[42]=45: -2.954549e-018, -6.278416e-018
vn[43]=46: -5.908271e-018, 1.532458e-017
vn[44]=47: 3.839873e-017, -4.430622e-017
vn[45]=48: -1.476693e-017, 1.605903e-017
vn[46]=49: -1.476522e-017, -7.474893e-017
vn[47]=50: -1.476362e-018, 1.974634e-017
vn[48]=51: -2.657179e-017, -4.530121e-017
vn[49]=52: 0.000000e+000, -6.716110e-017
vn[50]=53: -3.099461e-017, -3.569915e-017
vn[51]=54: 2.951614e-018, 4.418197e-017
vn[52]=55: 3.836785e-017, -5.533825e-019
vn[53]=56: 1.918245e-017, 6.086739e-018
vn[54]=57: -1.475465e-018, 2.333079e-017
vn[55]=58: 1.622899e-017, -3.651523e-017
vn[56]=59: 5.015904e-017, 1.936287e-018
vn[57]=60: 3.982969e-017, 4.148926e-018
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<< END OF DISLIN / VERSION 11.3.2 <<
<< Date : 23.03.2025 Time : 22:21:42 Pageformat: DA4L <<
<< Vectors : 1883 Warnings: 0 Fileformat: SVG <<
<< Metafile: ./srt/airepolygone_xpl-plgn.svg <<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<< END OF DISLIN / VERSION 11.3.2 <<
<< Date : 23.03.2025 Time : 22:21:42 Pageformat: DA4L <<
<< Vectors : 1390 Warnings: 0 Fileformat: SVG <<
<< Metafile: ./srt/airepolygone_xpl.svg <<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
[<..\xpl\src\sclgeom.xpl.cpp.airepolygone_xpl]