home *** CD-ROM | disk | FTP | other *** search
/ Rat's Nest 1 / ratsnest1.iso / prgmming / c / duff.cpp < prev    next >
Text File  |  1996-02-19  |  3KB  |  91 lines

  1. Path: unixg.ubc.ca!news.mic.ucla.edu!library.ucla.edu!europa.eng.gtefsd.com!paladin.american.edu!auvm!C53000.PETROBRAS.ANRJ.BR!BJ06
  2. Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
  3. Newsgroups: bit.listserv.frac-l
  4. X-Envelope-to: FRAC-L@GITVM1.BITNET
  5. X-VMS-To: @FRACTAL
  6. References: ANSP network   HEPnet SPAN Bitnet Internet gateway
  7. Message-ID: <EECB3E0D80010C24@fpsp.fapesp.br>
  8. Date: Tue, 19 Apr 1994 09:27:00 BSC
  9. Sender: "\"FRACTAL\" discussion list" <FRAC-L@GITVM1.BITNET>
  10. Comments: @FPSP.FAPESP.BR - @FPSP.HEPNET - @BRFAPESP.BITNET - .BR gateway
  11. From: BJ06@C53000.PETROBRAS.ANRJ.BR
  12. Subject: DUFFING.CPP (C++ 3.1 source code)
  13. Lines: 75
  14.  
  15. ---Program DUFFING.CPP---Begin---CUT HERE--------------------------------
  16. //
  17. //+---------------------------------------------------------------------+
  18. //+ Program DUFFING.CPP                                                 +
  19. //+ By Ramiro Perez {RPEREZ@UTPVM1.BITNET}, (Panama)                    +
  20. //+ and Fausto A. A. Barbuto {BJ06@C53000.PETROBRAS.ANRJ.BR}, (Brazil). +
  21. //+ C++ 3.1 programme's creator: Fausto A. A. Barbuto, April 18, 1994.  +
  22. //+ After a TURBO BASIC program by Ramiro Perez.                        +
  23. //+                                                                     +
  24. //+ Plots Duffing's oscillator with shaded, colourful spheres.          +
  25. //+                                                                     +
  26. //+ VGA 16 colours version.                                             +
  27. //+ Press any key to stop and PAUSE to freeze the execution.            +
  28. //+---------------------------------------------------------------------+
  29. //
  30. #include <graphics.h>
  31. #include <conio.h>
  32. #include <stdio.h>
  33. #include <dos.h>
  34. #include <math.h>
  35.  
  36. void Draw (double, double, int);
  37.  
  38. void main()
  39. {
  40.     int k, k1;
  41.     int ipal[14] = {8,1,9,25,11,43,31,32,4,52,36,38,54,62};
  42.     double a, cl, t, x, y, x1, y1, pi=3.141592653589793, twopi;
  43.     int graphdriver=DETECT, graphmode;
  44.  
  45.     initgraph(&graphdriver,&graphmode,"C:\\BORLANDC\\BGI");
  46.     cleardevice();
  47.  
  48.     x = 1.0;
  49.     y = 0.0;
  50.     t = 0.0;
  51.     a = 0.3;
  52.     twopi = 2.0*pi;
  53.     for (k=0;k<=13;k++) setpalette(k,ipal[k]);
  54.  
  55.     do {
  56.       k1++;
  57.       x1 = x + y/twopi;
  58.       y1 = y + (-(x*x*x) + x -0.25*y + a*cos(t))/twopi;
  59.       t  = 0.01*(k1 % 628);
  60.       x = x1;
  61.       y = y1;
  62.       if (t > pi) cl = 0;
  63.       else cl = 7;
  64.       Draw(x,y,cl);
  65.       delay(9); // Change the time delay to see the plot slower/faster
  66.     } while (!kbhit());
  67.     getch();
  68.     closegraph();
  69. }
  70.  
  71. void Draw (double x, double y, int cl)
  72. {
  73.     double i1, j1, c;
  74.     int i, k, colour;
  75.  
  76.     i1 = 150.0*x + 320.0;
  77.     j1 = -88.0*y + 240.0;
  78.     k = 7;
  79.  
  80.     for (i=1;i<=7;i++) {
  81.       c = 0.09*i;
  82.       colour = (i + cl);
  83.       setcolor(colour);
  84.       setfillstyle(SOLID_FILL,k);
  85.       circle ((int)(i1+c),(int)(j1+c),k);
  86.       k--;
  87.     }
  88.     return;
  89. }
  90. ---Program DUFFING.CPP---End---CUT HERE---------------------------------
  91.