Vector Fields (C Code)

Vector Fields - Program 1

#include <stdio.h>
#include "dislin.h"

#define NX 25
#define NY 25

float xv[NX][NY], yv[NX][NY], xp[NX], yp[NY];

main ()
{
  int i, j, iret;
  double xstep, ystep;

  xstep = 2.0 / (NX - 1);; 
  ystep = 2.0 / (NY - 1);; 
  for (i = 0;  i < NX; i++)
  { xp[i] = (float) (-1. +  i * xstep);  
    for (j = 0; j < NY; j++) 
    { yp[j] = (float) (-1. +  j *ystep); 
      xv[i][j] = xp[i];
      yv[i][j] = yp[j];
    }
  }
  
  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers");
  metafl ("xwin");

  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");

  axspos (350, 2300);
  axslen (2000, 2000);
  titlin ("Vector Field of (x, y)", 4);
  graf (-1., 1., -1., 0.2, -1., 1., -1., 0.2); 

  height (50);
  title ();

  vecclr (-2);
  vecmat ((float *) xv, (float *) yv, NX, NY, xp, yp, -1);
  disfin ();
}  

Vector Fields - Program 2

#include <stdio.h>
#include "dislin.h"

#define NX 25
#define NY 25

float xv[NX][NY], yv[NX][NY], xp[NX], yp[NY];

main ()
{
  int i, j, iret, iclr;
  double xstep, ystep;

  xstep = 2.0 / (NX - 1);; 
  ystep = 2.0 / (NY - 1);; 
  for (i = 0;  i < NX; i++)
  { xp[i] = (float) (-1. +  i * xstep);  
    for (j = 0; j < NY; j++) 
    { yp[j] = (float) (-1. +  j *ystep); 
      xv[i][j] = -yp[j];
      yv[i][j] = xp[i];
    }
  }
  
  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers");
  metafl ("xwin");

  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");

  axspos (350, 2300);
  axslen (2000, 2000);
  titlin ("Vector Field of (-y, x)", 4);
  graf (-1., 1., -1., 0.2, -1., 1., -1., 0.2); 

  height (50);
  title ();

  stmmod ("rk4", "integration");
  stmmod ("on", "close");
  stmmod ("on", "arrows");
  stmval (0.04, "distance");

  color ("red");
  iclr = intrgb (0.0, 0.0, 0.0);
  vecclr (iclr);
  stream ((float *) xv, (float *) yv, NX, NY, xp, yp, NULL, NULL, 0);
  disfin ();
}  

Vector Fields - Program 3

#include <stdio.h>
#include <math.h>
#include "dislin.h"

#define NX 25
#define NY 25

float xv[NX][NY], yv[NX][NY], xp[NX], yp[NY];

main ()
{ int i, j, iret;
  double xstep, ystep, fpi = 3.1415926/180.;

  xstep = 360. / (NX - 1);; 
  ystep = 360. / (NY - 1);; 
  for (i = 0;  i < NX; i++)
  { xp[i] = (float) (-1. +  i * xstep);  
    for (j = 0; j < NY; j++) 
    { yp[j] = (float) (-1. +  j *ystep); 
      xv[i][j] = (float) sin (xp[i] * fpi);
      yv[i][j] = (float) cos (yp[j] * fpi);
    }
  }
  
  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers");
  metafl ("xwin");

  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");

  axspos (350, 2300);
  axslen (2000, 2000);
  titlin ("Vector Field of (sin x, cos y)", 4);
  graf (0., 360., 0., 90., 0., 360., 0., 90.); 

  height (50);
  title ();

  vecclr (-2);
  vecmat ((float *) xv, (float *) yv, NX, NY, xp, yp, -1);
  disfin ();
}  


Vector Fields - Program 4

#include <stdio.h>
#include <math.h>
#include "dislin.h"

#define NX 25
#define NY 25

float xv[NX][NY], yv[NX][NY], xp[NX], yp[NY];

main ()
{ int i, j, iret;
  double xstep, ystep, fpi = 3.1415926/180.;

  xstep = 360. / (NX - 1);; 
  ystep = 360. / (NY - 1);; 
  for (i = 0;  i < NX; i++)
  { xp[i] = (float) (-1. +  i * xstep);  
    for (j = 0; j < NY; j++) 
    { yp[j] = (float) (-1. +  j *ystep); 
      xv[i][j] = (float) sin (xp[i] * fpi);
      yv[i][j] = (float) cos (yp[j] * fpi);
    }
  }
  
  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers");
  metafl ("xwin");

  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");

  axspos (350, 2300);
  axslen (2000, 2000);
  titlin ("Vector Field of (sin x, cos y)", 4);
  graf (0., 360., 0., 90., 0., 360., 0., 90.); 

  height (50);
  title ();

  vecclr (-2);
  vecmat ((float *) xv, (float *) yv, NX, NY, xp, yp, -1);

  stream ((float *) xv, (float *) yv, NX, NY, xp, yp, NULL, NULL, 0);
  disfin ();
}  

Vector Fields - Program 5

#include <stdio.h>
#include "dislin.h"

#define NX 256
#define NY 256

float xv[NX][NY], yv[NX][NY], wmat[NX][NY];
int itmat[NX][NY], iwmat[NX][NY];

main ()
{ int i, j, iret;
  double xstep, ystep, xp, yp;

  xstep = 2.0 / (NX - 1);; 
  ystep = 2.0 / (NY - 1);; 
  for (i = 0;  i < NX; i++)
  { xp = -1. +  i * xstep;  
    for (j = 0; j < NY; j++) 
    { yp = -1. +  j *ystep; 
      xv[i][j] = xp;
      yv[i][j] = yp;
    }
  }
  
  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers");
  metafl ("xwin");

  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");

  labdig (-1, "xyz");
  axspos (250, 2250);
  ax3len (2000, 2000, 2000);
  titlin ("Vector Field of (x, y)", 4);

  txture ((int *) itmat, NX, NY);
  autres (NX, NY);
  graf3 (0., 360., 0., 90., 0., 360., 0., 90., 0., 255., 0., 50);

  licmod ("on", "scale");
  licpts ((float *) xv, (float *) yv, NX, NY, (int *) itmat, (int *) iwmat,
          (float *) wmat);
  crvmat ((float *) wmat, NX, NY, 1, 1);

  height (50);
  title ();
  disfin ();
}  

Vector Fields - Program 6

#include <stdio.h>
#include "dislin.h"

#define NX 256
#define NY 256

float xv[NX][NY], yv[NX][NY], wmat[NX][NY];
int itmat[NX][NY], iwmat[NX][NY];

main ()
{ int i, j, iret;
  double xstep, ystep, xp, yp;

  xstep = 2.0 / (NX - 1);; 
  ystep = 2.0 / (NY - 1);; 
  for (i = 0;  i < NX; i++)
  { xp = -1. +  i * xstep;  
    for (j = 0; j < NY; j++) 
    { yp = -1. +  j *ystep; 
      xv[i][j] = -yp;
      yv[i][j] = xp;
    }
  }
  
  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers");
  metafl ("xwin");

  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");

  labdig (-1, "xyz");
  axspos (250, 2250);
  ax3len (2000, 2000, 2000);
  titlin ("Vector Field of (-y, x)", 4);

  txture ((int *) itmat, NX, NY);
  autres (NX, NY);
  graf3 (0., 360., 0., 90., 0., 360., 0., 90., 0., 255., 0., 50);

  licmod ("on", "scale");
  licpts ((float *) xv, (float *) yv, NX, NY, (int *) itmat, (int *) iwmat,
          (float *) wmat);
  crvmat ((float *) wmat, NX, NY, 1, 1);

  height (50);
  title ();
  disfin ();
}  

Vector Fields - Program 7

#include <stdio.h>
#include <math.h>
#include "dislin.h"

#define NX 256
#define NY 256

float xv[NX][NY], yv[NX][NY], wmat[NX][NY];
int itmat[NX][NY], iwmat[NX][NY];

main ()
{ int i, j, iret;
  double xstep, ystep, fpi = 3.1415926/180., xp, yp;

  xstep = 360. / (NX - 1);; 
  ystep = 360. / (NY - 1);; 
  for (i = 0;  i < NX; i++)
  { xp = -1. +  i * xstep;  
    for (j = 0; j < NY; j++) 
    { yp = -1. +  j *ystep; 
      xv[i][j] = (float) sin (xp * fpi);
      yv[i][j] = (float) cos (yp * fpi);
    }
  }
  
  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers");
  metafl ("xwin");

  disini ();
  pagera ();
  hwfont ();
  setvlt ("rgrey");
  name ("X-axis", "x");
  name ("Y-axis", "y");

  labdig (-1, "xyz");
  axspos (250, 2250);
  ax3len (2000, 2000, 2000);
  titlin ("Vector Field of (sin x, cos y)", 4);

  txture ((int *) itmat, NX, NY);
  autres (NX, NY);
  graf3 (0., 360., 0., 90., 0., 360., 0., 90., 0., 255., 0., 50);

  licpts ((float *) xv, (float *) yv, NX, NY, (int *) itmat, (int *) iwmat,
          (float *) wmat);
  crvmat ((float *) wmat, NX, NY, 1, 1);
  height (50);
  title ();
  disfin ();
}  

Vector Fields - Program 8

#include <stdio.h>
#include <math.h>
#include "dislin.h"

#define NX 256
#define NY 256

float xv[NX][NY], yv[NX][NY], wmat[NX][NY];
int itmat[NX][NY], iwmat[NX][NY];

main ()
{ int i, j, iret;
  double xstep, ystep, fpi = 3.1415926/180., xp, yp;

  xstep = 360. / (NX - 1);; 
  ystep = 360. / (NY - 1);; 
  for (i = 0;  i < NX; i++)
  { xp = -1. +  i * xstep;  
    for (j = 0; j < NY; j++) 
    { yp = -1. +  j *ystep; 
      xv[i][j] = (float) sin (xp * fpi);
      yv[i][j] = (float) cos (yp * fpi);
    }
  }
  
  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers");
  metafl ("xwin");

  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");

  labdig (-1, "xyz");
  axspos (250, 2250);
  ax3len (2000, 2000, 2000);
  titlin ("Vector Field of (sin x, cos y)", 4);

  txture ((int *) itmat, NX, NY);
  autres (NX, NY);
  graf3 (0., 360., 0., 90., 0., 360., 0., 90., 0., 255., 0., 50);

  licmod ("on", "scale");
  licpts ((float *) xv, (float *) yv, NX, NY, (int *) itmat, (int *) iwmat,
          (float *) wmat);
  crvmat ((float *) wmat, NX, NY, 1, 1);
  height (50);
  title ();
  disfin ();
}  

Vector Fields - Program 9

#include <stdio.h>
#include "dislin.h"

#define NX 10
#define NY 10
#define NZ 10

float xv[NX][NY][NZ], yv[NX][NY][NZ], zv[NX][NY][NZ], xp[NX], yp[NY], zp[NZ];

main ()
{ int i, j, k;
  double xstep, ystep, zstep;

  xstep = 2.0 / (NX - 1);; 
  ystep = 2.0 / (NY - 1);; 
  zstep = 2.0 / (NZ - 1);; 

  for (i = 0;  i < NX; i++)
  { xp[i] = (float) (-1. +  i * xstep);  
    for (j = 0; j < NY; j++) 
    { yp[j] = (float) (-1. +  j * ystep);  
      for (k = 0; k < NZ; k++) 
      { zp[k] = (float) (-1. +  k * zstep);  
        xv[i][j][k] = xp[i];
        yv[i][j][k] = yp[j]; 
        zv[i][j][k] = zp[k]; 
      }
    }
  }

  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers"); 
  metafl ("cons");
  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");
  name ("Z-axis", "z");

  axspos (400, 2300);
  axslen (2000, 2000);
  titlin ("Vector Field of (x, y, z)", 4);

  view3d (2., -5., 3., "ABS");
  graf3d (-1., 1., -1., 0.2, -1., 1., -1., 0.2, -1., 1., -1., 0.2);
  box3d ();

  height (50);
  title ();

  vecclr (-2);
  vecmat3d ((float *) xv, (float *) yv, (float *) zv, NX, NY, NZ, 
            xp, yp, zp, -1);
  disfin ();
}  


Vector Fields - Program 10

#include <stdio.h>
#include "dislin.h"

#define NX 10
#define NY 10
#define NZ 10

float xv[NX][NY][NZ], yv[NX][NY][NZ], zv[NX][NY][NZ], xp[NX], yp[NY], zp[NZ];

main ()
{ int i, j, k;
  double xstep, ystep, zstep;

  xstep = 2.0 / (NX - 1);; 
  ystep = 2.0 / (NY - 1);; 
  zstep = 2.0 / (NZ - 1);; 

  for (i = 0;  i < NX; i++)
  { xp[i] = (float) (-1. +  i * xstep);  
    for (j = 0; j < NY; j++) 
    { yp[j] = (float) (-1. +  j * ystep);  
      for (k = 0; k < NZ; k++) 
      { zp[k] = (float) (-1. +  k * zstep);  
        xv[i][j][k] = xp[i];
        yv[i][j][k] = yp[j]; 
        zv[i][j][k] = zp[k]; 
      }
    }
  }

  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers"); 
  metafl ("cons");
  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");
  name ("Z-axis", "z");

  axspos (400, 2300);
  axslen (2000, 2000);
  titlin ("Vector Field of (x, y, z)", 4);

  view3d (2., -5., 3., "ABS");
  graf3d (-1., 1., -1., 0.2, -1., 1., -1., 0.2, -1., 1., -1., 0.2);
  box3d ();

  height (50);
  title ();

  vecmat3d ((float *) xv, (float *) yv, (float *) zv, NX, NY, NZ, 
            xp, yp, zp, -1);
  color ("red");

  stmval (0.04, "distance");
  stream3d ((float *) xv, (float *) yv, (float *) zv, NX, NY, NZ, 
            xp, yp, zp, NULL, NULL, NULL, 0);
  disfin ();
}  

Vector Fields - Program 11

#include <stdio.h>
#include "dislin.h"

#define NX 10
#define NY 10
#define NZ 10

float xv[NX][NY][NZ], yv[NX][NY][NZ], zv[NX][NY][NZ], xp[NX], yp[NY], zp[NZ];

main ()
{ int i, j, k;
  double xstep, ystep, zstep;

  xstep = 2.0 / (NX - 1);; 
  ystep = 2.0 / (NY - 1);; 
  zstep = 2.0 / (NZ - 1);; 

  for (i = 0;  i < NX; i++)
  { xp[i] = (float) (-1. +  i * xstep);  
    for (j = 0; j < NY; j++) 
    { yp[j] = (float) (-1. +  j * ystep);  
      for (k = 0; k < NZ; k++) 
      { zp[k] = (float) (-1. +  k * zstep);  
        xv[i][j][k] = -yp[j];
        yv[i][j][k] = xp[i]; 
        zv[i][j][k] = 0.; 
      }
    }
  }

  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers"); 
  metafl ("cons");
  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");
  name ("Z-axis", "z");

  axspos (400, 2300);
  axslen (2000, 2000);
  titlin ("Vector Field of (-y, x, 0)", 4);

  view3d (2., -5., 3., "ABS");
  graf3d (-1., 1., -1., 0.2, -1., 1., -1., 0.2, -1., 1., -1., 0.2);
  box3d ();

  height (50);
  title ();

  stmmod ("on", "close");
  stmmod ("rk4", "integration"); 
  stmval (0.04, "distance");
  stmmod ("on", "arrows");
  vecclr (254);

  stream3d ((float *) xv, (float *) yv, (float *) zv, NX, NY, NZ, 
            xp, yp, zp, NULL, NULL, NULL, 0);
  disfin ();
}  

Vector Fields - Program 12

#include <stdio.h>
#include "dislin.h"

#define NX 10
#define NY 10
#define NZ 10

float xv[NX][NY][NZ], yv[NX][NY][NZ], zv[NX][NY][NZ], xp[NX], yp[NY], zp[NZ];
float xs[10], ys[10], zs[10];

main ()
{ int i, j, k;
  double xstep, ystep, zstep;

  xstep = 2.0 / (NX - 1);; 
  ystep = 2.0 / (NY - 1);; 
  zstep = 2.0 / (NZ - 1);; 

  for (i = 0;  i < NX; i++)
  { xp[i] = (float) (-1. +  i * xstep);  
    for (j = 0; j < NY; j++) 
    { yp[j] = (float) (-1. +  j * ystep);  
      for (k = 0; k < NZ; k++) 
      { zp[k] = (float) (-1. +  k * zstep);  
        xv[i][j][k] = -yp[j];
        yv[i][j][k] = xp[i]; 
        zv[i][j][k] = 0.; 
      }
    }
  }

  winsiz (600, 600);
  page (2600, 2600);
  sclmod ("full");
  scrmod ("revers"); 
  metafl ("cons");
  disini ();
  pagera ();
  hwfont ();

  name ("X-axis", "x");
  name ("Y-axis", "y");
  name ("Z-axis", "z");

  axspos (400, 2300);
  axslen (2000, 2000);
  titlin ("Some Streamlines of (-y, x, 0.)", 4);

  light ("on");
  shdmod ("smooth", "surface");
  litop3(1,0.5,0.5,0.5,"ambient");

  view3d (2., -5., 3., "ABS");
  graf3d (-1., 1., -1., 0.2, -1., 1., -1., 0.2, -1., 1., -1., 0.2);
  box3d ();

  height (50);
  title ();

  stmmod ("on", "close");
  stmmod ("rk4", "integration"); 
  stmmod ("on", "arrows");
  stmopt (-2, "arrow");

  for (i = 0; i < 10; i++)
  { xs[i] = -0.5; 
    ys[i] = -0.5; 
    zs[i] = -0.9 + i * 0.2;
  }

  matop3 (0.0, 1.0, 0.0, "diffuse");
  stream3d ((float *) xv, (float *) yv, (float *) zv, NX, NY, NZ, 
            xp, yp, zp, xs, ys, zs, 10);
  disfin ();
}  
Go to Editor View