1/* -*-ePiX-*- */ 2#include "epix.h" 3using namespace ePiX; 4 5// ODE parameters 6const double A1(10); 7const double A2(28); 8const double A3(2.6666); 9 10// parameter box 11const double MAX(30); 12 13// bounding box (set in screens) 14const double XMAX(50); 15 16// flow time 17const double TMAX(2000); 18 19P F(double x, double y, double z) 20{ 21 return 0.01*P(A1*(y-x), x*(A2-z)-y, x*y-A3*z); 22} 23 24domain R(P(-MAX,-MAX,0), P(MAX,MAX,2*MAX), mesh(6, 6, 6)); 25 26void draw_frame() 27{ 28 dart_field(F, R.resize1(0,MAX), 0.5); 29 30 bold(Red()); 31 ode_plot(F, P(10,0,0), 0, TMAX, TMAX); 32 33 pen(Blue()); 34 // nearby start points, but trajectories not close 35 ode_plot(F, P(10.5,0,0), 0, TMAX, TMAX); 36 37 plain(Black()); 38 dart_field(F, R.resize1(-MAX,0), 0.5); 39} 40 41// initialize the camera 42void init_cam(const P& arg) 43{ 44 camera.at(arg); 45 camera.look_at(P(0,0,MAX)); 46 camera.range(500); 47} 48 49int main() 50{ 51 picture(P(-1,0), P(1,1), "6x3in"); 52 53 begin(); 54 55 screen left_eye(P(-XMAX,-XMAX), P(XMAX,XMAX)); 56 activate(left_eye); 57 init_cam(P(-100, 90, 63)); 58 draw_frame(); 59 60 screen right_eye(P(-XMAX,-XMAX), P(XMAX,XMAX)); 61 activate(right_eye); 62 init_cam(P(-100, 80, 63)); 63 draw_frame(); 64 65 // page layout 66 inset(left_eye, P(0,0), P(1,1)); 67 inset(right_eye, P(-1,0), P(0,1)); 68 69 end(); 70} 71