Ch produced plot /* The source code for generating the above plot */ #include <chplot.h> #include <math.h> #define POINTS 50 #define NUM1 30 #define NUM2 360 #define NUMX1 36 #define NUMY1 20 #define NUMX2 30 #define NUMY2 30 #define NUMX3 40 #define NUMY3 60 int main() { double t[POINTS], b0[POINTS], b1[POINTS], b2[POINTS], b3[POINTS]; int i, j, datasetnum=0, line_type=4, line_width = 2; double theta2[NUM2], r2[NUM2]; double x3[NUM2], y3[NUM2], z3[NUM2], z32[NUM2]; double theta4[NUMX1], z4[NUMY1], r4[NUMX1*NUMY1]; double r, x5[NUMX2], y5[NUMY2], z5[NUMX2*NUMY2]; double x6[NUMX3], y6[NUMY3], z6[NUMX3*NUMY3]; class CPlot subplot, *spl; /* plot 1 */ for(i=0; i< POINTS; i++) { t[i] = 1+i*(10.0-1)/(POINTS-1); b0[i] = j0(t[i]); b1[i] = j1(t[i]); b2[i] = jn(2, t[i]); b3[i] = jn(3, t[i]); } /* plot 2 */ for(i=0; i<NUM2; i++) { theta2[i]= 0 + i*M_PI/(NUM2-1); // linspace(theta2, 0, M_PI); r2[i] = sin(5*theta2[i]); // r2 = sin(5*theta2); } /* plot 3 */ for(i=0; i<NUM2; i++) { x3[i]= 0 + i*360.0/(NUM2-1); // linspace(x3, 0, 360); y3[i] = sin(x3[i]*M_PI/180); z3[i] = cos(x3[i]*M_PI/180); z32[i] = y3[i]; } /* plot 4 */ for(i=0; i<NUMX1; i++) { theta4[i]= 0 + i*360.0/(NUMX1-1); // linspace(theta4, 0, 360); } for(i=0; i<NUMY1; i++) { z4[i]= 0 + i*2*M_PI/(NUMY1-1); // linspace(z4, 0, 2*M_PI); } for(i=0; i<NUMX1; i++) { for(j=0; j<NUMY1; j++) { r4[i*NUMY1+j] = 2+cos(z4[j]); } } /* plots 5 */ for(i=0; i<NUMX2; i++) { x5[i]= -10 + i*20.0/(NUMX2-1); // linspace(x5, -10, 10); } for(i=0; i<NUMY2; i++) { y5[i]= -10 + i*20/(NUMY2-1); // linspace(y5, -10, 10); } for(i=0; i<NUMX2; i++) { for(j=0; j<NUMY2; j++) { r = sqrt(x5[i]*x5[i]+y5[j]*y5[j]); z5[NUMY2*i+j] = sin(r)/r; } } /* plots 6 */ for(i=0; i<NUMX3; i++) { x6[i]= -3 + i*6.0/(NUMX3-1); // linspace(x6, -3, 3); } for(i=0; i<NUMY3; i++) { y6[i]= -4 + i*8/(NUMY3-1); // linspace(y6, -4, 4); } for(i=0; i<NUMX3; i++) { for(j=0; j<NUMY3; j++) { z6[NUMY3*i+j] = 3*(1-x6[i])*(1-x6[i])* exp(-(x6[i]*x6[i])-(y6[j]+1)*(y6[j]+1)) - 10*(x6[i]/5 - x6[i]*x6[i]*x6[i]-pow(y6[j],5))* exp(-x6[i]*x6[i]-y6[j]*y6[j]) - 1/3*exp(-(x6[i]+1)*(x6[i]+1)-y6[j]*y6[j]); } } subplot.subplot(2,3); /* create 2 x 3 subplot */ spl = subplot.getSubplot(0,0); /* get subplot (0,0) */ spl->title("Line"); spl->label(PLOT_AXIS_X,"t"); spl->label(PLOT_AXIS_Y,"Bessel functions"); spl->data2DCurve(t, b0, POINTS); spl->data2DCurve(t, b1, POINTS); spl->data2DCurve(t, b2, POINTS); spl->data2DCurve(t, b3, POINTS); spl->legend("j0", 0); spl->legend("j1", 1); spl->legend("j2", 2); spl->legend("j3", 3); spl = subplot.getSubplot(0,1); /* get subplot (0,1) */ spl->title("Polar"); spl->axisRange(PLOT_AXIS_XY, -1, 1); spl->ticsRange(PLOT_AXIS_XY, .5, -1, 1); spl->data2DCurve(theta2, r2, NUM2); spl->polarPlot(PLOT_ANGLE_RAD); spl->sizeRatio(-1); spl = subplot.getSubplot(0,2); /* get subplot (0,2) */ spl->title("3D curve"); spl->data3DCurve(x3, y3, z3, NUM2); spl->data3DCurve(x3, y3, z32, NUM2); spl->axisRange(PLOT_AXIS_X, 0, 400); spl->ticsRange(PLOT_AXIS_X, 200, 0, 400); spl->axisRange(PLOT_AXIS_Y, -1, 1); spl->ticsRange(PLOT_AXIS_Y, 1, -1, 1); spl->axisRange(PLOT_AXIS_Z, -1, 1); spl->ticsRange(PLOT_AXIS_Z, 1, -1, 1); spl->colorBox(PLOT_OFF); spl = subplot.getSubplot(1,0); /* get subplot (1,0) */ spl->title("Cylindrical"); spl->data3DSurface(theta4, z4, r4, NUMX1, NUMY1); spl->coordSystem(PLOT_COORD_CYLINDRICAL, PLOT_ANGLE_DEG); spl->axisRange(PLOT_AXIS_Z, 0, 8); spl->ticsRange(PLOT_AXIS_Z, 2, 0, 8); spl->axisRange(PLOT_AXIS_XY, -4, 4); spl->colorBox(PLOT_OFF); spl->ticsRange(PLOT_AXIS_XY, 2, -4, 4); spl->label(PLOT_AXIS_XYZ, NULL); spl = subplot.getSubplot(1,1); /* get subplot (1,1) */ spl->title("3D Mesh"); spl->axisRange(PLOT_AXIS_X, -10, 10); spl->ticsRange(PLOT_AXIS_X, 5, -10, 10); spl->axisRange(PLOT_AXIS_Y, -10, 10); spl->ticsRange(PLOT_AXIS_Y, 5, -10, 10); spl->axisRange(PLOT_AXIS_Z, -.4, 1.2); spl->ticsRange(PLOT_AXIS_Z, .4, -.4, 1.2); spl->data3DSurface(x5, y5, z5, NUMX2, NUMY2); spl->colorBox(PLOT_OFF); spl->label(PLOT_AXIS_XYZ, NULL); spl = subplot.getSubplot(1,2); /* get subplot (1,2) */ spl->title("3D Mesh"); spl->data3DSurface(x6, y6, z6, NUMX3, NUMY3); spl->axisRange(PLOT_AXIS_X, -3, 3); spl->ticsRange(PLOT_AXIS_X, 2, -3, 3); spl->axisRange(PLOT_AXIS_Y, -4, 4); spl->ticsRange(PLOT_AXIS_Y, 2, -4, 4); spl->axisRange(PLOT_AXIS_Z, -8, 8); spl->ticsRange(PLOT_AXIS_Z, 4, -8, 8); spl->colorBox(PLOT_OFF); spl->label(PLOT_AXIS_XYZ, NULL); spl->ticsLevel(0.1); subplot.plotting(); return 0; }