//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* // Program electron //=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* #include #include "nxgraph.h" //---- physical setting #define Q (-1.0) #define M (1.0) #define dT (1.0/256) #define Eext (1.0) #define Bext (1.0) //---- graphic setting #define WIN_WIDTH (256) #define WIN_HEIGHT (256) //---- main function int main(void) { XEvent ev; NXOpenWindow("Electron motion in elemag field", WIN_WIDTH, WIN_HEIGHT ); double qx=0.0, qy=0.0; double px=0.0, py=0.0; do{ NXDrawPoint( WIN_WIDTH/2 + (int)(8*qx), - (int)(8*qy) ); qx += px/M*dT; qy += py/M*dT; px += (Q*Eext + Q*Bext*py)*dT; py += ( - Q*Bext*px)*dT; NXCheckEvent( NX_NOWAIT, ev ); }while( ev.type != KeyPress ); NXCloseWindow(); return(0); }