home *** CD-ROM | disk | FTP | other *** search
/ Bila Vrana / BILA_VRANA.iso / 007A / SVGACC24.ZIP / SVGADEM2.C < prev    next >
C/C++ Source or Header  |  1996-01-30  |  36KB  |  1,206 lines

  1. /****************************************************************************
  2.      
  3.       'SVGACC' A Super Vga Graphics Library for use with Microsoft compatible
  4.       C/C++ compilers
  5.       Copyright 1993-1996 by Stephen L. Balkum and Daniel A. Sill
  6.  
  7.     **************** UNREGISTERD SHAREWARE VERSION ***********************
  8.     * FOR EVUALATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN  *
  9.     * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
  10.     * OR USED FOR ANY PURPOSE OTHER THAN THE EVUALTION OF THIS LIBRARY.  *
  11.     **********************************************************************
  12.  
  13.     **************** NO WARRANTIES AND NO LIABILITY **********************
  14.     * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
  15.     * expressed or implied, of merchantability, or fitness, for a        *
  16.     * particular use or purpose of this SOFTWARE and documentation.      *
  17.     * In no event shall Stephen L. Balkum or Daniel A. Sill be held      *
  18.     * liable for any damages resulting from the use or misuse of the     * 
  19.     * SOFTWARE and documentation.                                        *
  20.     **********************************************************************
  21.  
  22.     ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
  23.     * Use, duplication, or disclosure of the SOFTWARE and documentation  *
  24.     * by the U.S. Government is subject to the restictions as set forth  *
  25.     * in subparagraph (c)(1)(ii) of the Rights in Technical Data and     *
  26.     * Computer Software cluse at DFARS 252.227-7013.                     *
  27.     * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill,   *
  28.     * P.O. Box 7704, Austin, Texas 78713-7704                            *
  29.     **********************************************************************
  30.  
  31.     **********************************************************************
  32.     * By using this SOFTWARE or documentation, you agree to the above    *
  33.     * terms and conditions.                                              *
  34.     **********************************************************************
  35.  
  36.  ***************************************************************************/
  37.  
  38. #define MODULE
  39.  
  40. #include <stdio.h>
  41. #include <conio.h>
  42. #include <malloc.h>
  43. #include <string.h>
  44. #include <dos.h>
  45. #include <math.h>
  46.  
  47. #include "svgacc.h"
  48.  
  49. #include "svgademo.h"
  50.  
  51. char showpcx(char fname[]);
  52. void showhouse(D2Point *plotarray, D2Point *oplotarray);
  53. void showstar(D2Point *plotarray, D2Point *oplotarray);
  54.  
  55.  
  56. /********
  57.  * DO2D *
  58.  ********/
  59.  
  60. char do2d(void)
  61. {
  62.     int i, trans;
  63.     int spcing, cntx, cnty;
  64.     D2Point pointarray[9];
  65.     D2Point plotarray[9];
  66.     D2Point oplotarray[9];
  67.     char ret;
  68.     char title[TITLEN];
  69.     char buf[TITLEN];
  70.     char buf2[TITLEN];
  71.  
  72.     /*
  73.      * Set up the Title
  74.      */
  75.     sprintf(title,"DEMO 11: 2D functions");
  76.     palset(pal,0,255);
  77.  
  78.     /*
  79.      * Set up the star patter of points
  80.      */
  81.     cntx = maxx / 2;
  82.     cnty = (maxy - 32) / 2 + 32;
  83.     spcing = maxx / 15;
  84.     pointarray[0].x = 0;
  85.     pointarray[0].y = -spcing * 3;
  86.     pointarray[1].x = spcing;
  87.     pointarray[1].y = -spcing;
  88.     pointarray[2].x = spcing * 3;
  89.     pointarray[2].y = 0;
  90.     pointarray[3].x = spcing;
  91.     pointarray[3].y = spcing;
  92.     pointarray[4].x = 0;
  93.     pointarray[4].y = spcing * 3;
  94.     pointarray[5].x = -spcing;
  95.     pointarray[5].y = spcing;
  96.     pointarray[6].x = -spcing * 3;
  97.     pointarray[6].y = 0;
  98.     pointarray[7].x = -spcing;
  99.     pointarray[7].y = -spcing;
  100.     pointarray[8].x = 0;
  101.     pointarray[8].y = -spcing * 3;
  102.  
  103.     /*
  104.      * Show d2translate
  105.      */
  106.     fillscreen(0);
  107.     setview(0,0,maxx,maxy);
  108.     drwstring(SET,7,0,title,10,0);
  109.     sprintf(buf,"d2translate(point,xtrans,ytrans,inarray,outarray);");
  110.     drwstring(SET,7,0,buf,10,16);
  111.     setview(0,32,maxx,maxy);
  112.     d2translate(9,cntx,cnty,pointarray,plotarray);
  113.     showstar(plotarray,oplotarray);
  114.     ret = getkey();
  115.     if ((ret=='s') || (ret=='q')) {
  116.         fillscreen(0);
  117.         setview(0,0,maxx,maxy);
  118.         return(ret);
  119.     }
  120.     trans = 0;
  121.     for(i=0;i<spcing;i++) {
  122.         trans+=2;
  123.         d2translate(9,cntx+trans,cnty+trans,pointarray,plotarray);
  124.         showstar(plotarray,oplotarray);
  125.         sdelay(2);
  126.     }
  127.     for(i=0;i<spcing;i++) {
  128.         trans-=2;
  129.         d2translate(9,cntx+trans,cnty+trans,pointarray,plotarray);
  130.         showstar(plotarray,oplotarray);
  131.         sdelay(2);
  132.     }
  133.     ret = getkey();
  134.     if ((ret=='s') || (ret=='q')) {
  135.         fillscreen(0);
  136.         setview(0,0,maxx,maxy);
  137.         return(ret);
  138.     }
  139.  
  140.     /*
  141.      * Show d2scale
  142.      */
  143.     setview(0,16,maxx,31);
  144.     fillview(0);
  145.     setview(0,16,maxx,maxy);
  146.     sprintf(buf,"d2scale(points,xscale,yscale,inarray,outarray);");
  147.     drwstring(SET,7,0,buf,10,16);
  148.     setview(0,32,maxx,maxy);
  149.     d2translate(9,cntx,cnty,pointarray,plotarray);
  150.     showstar(plotarray,oplotarray);
  151.     for(i=256;i<=380;i+=4) {
  152.         d2scale(9,i,i,pointarray,plotarray);
  153.         d2translate(9,cntx,cnty,plotarray,plotarray);
  154.         showstar(plotarray,oplotarray);
  155.         sdelay(2);
  156.     }
  157.     for(i=384;i>=128;i-=4) {
  158.         d2scale(9,i,i,pointarray,plotarray);
  159.         d2translate(9,cntx,cnty,plotarray,plotarray);
  160.         showstar(plotarray,oplotarray);
  161.         sdelay(2);
  162.     }
  163.     for(i=124;i<=256;i+=4) {
  164.         d2scale(9,i,i,pointarray,plotarray);
  165.         d2translate(9,cntx,cnty,plotarray,plotarray);
  166.         showstar(plotarray,oplotarray);
  167.         sdelay(2);
  168.     }
  169.     ret = getkey();
  170.     if ((ret=='s') || (ret=='q')) {
  171.         fillscreen(0);
  172.         setview(0,0,maxx,maxy);
  173.         return(ret);
  174.     }
  175.  
  176.     /*
  177.      * Show d2rotate
  178.      */
  179.     setview(0,16,maxx,31);
  180.     fillview(0);
  181.     setview(0,16,maxx,maxy);
  182.     sprintf(buf,"d2rotate(points,xorigin,yorigin,angle,inarray,outarray);");
  183.     drwstring(SET,7,0,buf,10,16);
  184.     sprintf(buf2,"Let's do it about the center of the object.");
  185.     drwstring(SET,7,0,buf2,10,32);
  186.     setview(0,48,maxx,maxy);
  187.     d2translate(9,cntx,cnty,pointarray,plotarray);
  188.     showstar(plotarray,oplotarray);
  189.     for(i=0;i<=180;i++) {
  190.         d2rotate(9,0,0,i,pointarray,plotarray);
  191.         d2translate(9,cntx,cnty,plotarray,plotarray);
  192.         showstar(plotarray,oplotarray);
  193.         sdelay(2);
  194.     }
  195.     for(i=180;i>=0;i-=2) {
  196.         d2rotate(9,0,0,i,pointarray,plotarray);
  197.         d2translate(9,cntx,cnty,plotarray,plotarray);
  198.         showstar(plotarray,oplotarray);
  199.         sdelay(2);
  200.     }
  201.     ret = getkey();
  202.     if ((ret=='s') || (ret=='q')) {
  203.         fillscreen(0);
  204.         setview(0,0,maxx,maxy);
  205.         return(ret);
  206.     }
  207.  
  208.     /*
  209.      * Show d2rotate (about an arbitrary point)
  210.      */
  211.     setview(0,16,maxx,48);
  212.     fillview(0);
  213.     setview(0,16,maxx,maxy);
  214.     sprintf(buf,"d2rotate(points,xorigin,yorigin,angle,inarray,outarray);");
  215.     drwstring(SET,7,0,buf,10,16);
  216.     sprintf(buf2,"Let's do it about an arbitrary point.");
  217.     drwstring(SET,7,0,buf2,10,32);
  218.     setview(0,48,maxx,maxy);
  219.     d2translate(9,cntx,cnty,pointarray,plotarray);
  220.     showstar(plotarray,oplotarray);
  221.     for(i=0;i<=360;i+=2) {
  222.         d2rotate(9,0,spcing*3,i,pointarray,plotarray);
  223.         d2translate(9,cntx,cnty,plotarray,plotarray);
  224.         showstar(plotarray,oplotarray);
  225.         sdelay(2);
  226.     }
  227.     ret = getkey();
  228.     
  229.     fillscreen(0);
  230.     setview(0,0,maxx,maxy);
  231.     
  232.     return(ret);
  233.  
  234. }
  235.  
  236. /********
  237.  * DO3D *
  238.  ********/
  239.  
  240. char do3d(void)
  241. {
  242.     float pi;
  243.     int i;
  244.     float height, radius;
  245.     int spcing;
  246.     D3Point pointarray[14];
  247.     D3Point playarray[14];
  248.     D2Point plotarray[14];
  249.     D2Point oplotarray[14];
  250.     ProjParameters proj;
  251.     char ret;
  252.     char title[TITLEN];
  253.     char buf[TITLEN];
  254.     
  255.  
  256.     /*
  257.      * Set up the Title
  258.      */
  259.     sprintf(title,"DEMO 12: 3D functions");
  260.     palset(pal,0,255);
  261.  
  262.     /*
  263.      * Set up the house pattern of points
  264.      */
  265.     spcing = maxx / 6;
  266.     pointarray[0].x = -spcing;
  267.     pointarray[0].y = -spcing * 2;
  268.     pointarray[0].z = 0;
  269.     po