Viewpoint Routines.

Viewpoint routines alter the current transformation matrix.

polarview(dist, azim, inc, twist)

Specify the viewer's position in polar coordinates by giving the distance from the viewpoint to the world origin, the azimuthal angle in the x-y plane, measured from the y-axis, the incidence angle in the y-z plane, measured from the z-axis, and the twist angle about the line of sight.

```    Fortran:
subroutine polarview(dist, azim, inc, twist)
real dist, azim, inc, twist

C:
polarview(dist, azim, inc, twist)
float     dist, azim, inc, twist;

Pascal:
procedure PolarView(dist, azim, inc, twist: real)
```

up(x, y, z)

Specify the world up. This can be used to prevent lookat's sometimes annoying habit of turning everything upside down due to the line of sight crossing the appropriate axis.

```    Fortran:
subroutine up(x, y, z)
real x, y, z

C:
up(x, y, z)
float     x, y, z;

Pascal:
procedure Up(x, y, z: real)
```

lookat(vx, vy, vz, px, py, pz, twist)

Specify the viewer's position by giving a viewpoint and a reference point in world coordinates. A twist about the line of sight may also be given.

```    Fortran:
subroutine lookat(vx, vy, vz, px, py, pz, twist)
real vx, vy, vz, px, py, pz, twist

C:
lookat(vx, vy, vz, px, py, pz, twist)
float     vx, vy, vz, px, py, pz, twist;

Pascal:
procedure LookAt(vx, vy, vz, px, py, pz, twist: real)
```