Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.atnf.csiro.au/computing/software/gipsy/tsk/3dplot.dc1
Дата изменения: Mon Mar 20 09:02:47 2000
Дата индексирования: Fri Jan 16 01:11:22 2009
Кодировка:

Program: 3DPLOT

Purpose: View Set, subset in perspective

Category: PLOTTING

File: 3dplot.c

Author: M. Vogelaar

Keywords:

INSET= Give set (, subsets) to plot:
Maximum number of subsets is 2048.

BOX= Frame for input subsets. [entire subset]

GRDEVICE= Plot device: [List of devices]
Destination of plot, Screen or Hardcopy.

MOSAIC= View surface subdivisions x,y: [1,1]
View surface can contain a number of plot pages in
in X and Y direction (mosaic). Default is 1 plot in
both X- and Y direction.

** PAPER= Give width(cm), aspect ratio: [0.0,1.0]
Aspect ratio is height/width.

** LINEWIDTH= Give line width (1-21): [1]
For a hardcopy, the default is 2.

DISTANCE= Distance of the eye from the screen: [calculated]
Control amount of perspective with this
unitless number.

RHO= Distance between viewpoint and origin. [calculated]

THETA= Angle between view vector and positive x-axis wrt.
the positive x-axis (degrees): [30]
x-axis is equivalent to the first subset axis.

PHI= Angle between view vector and positive z-axis wrt.
the positive z-axis (degrees): [60]
PHI= ranges from 0 to 180 deg.
z-axis is equivalent to the image value axis.

** SCALE= Give scale for image data: [calculated]
Scale image data so that the range in z-values are
in range of x- and y-values.

DECIM= Give decimation factors x, y: [calculated]
Two integer values that decimates the number of
pixels in x and y. Decimation must be used if too many
positions are required.

PLOTOPT= Plot option: [0]
0: Plot surface in both directions
1: Plot in X-direction only
2: Plot in Y-direction only

OPTION= Min, max from: 1)User 2)Calculation 3)Header [3]

MINMAX= Give data min, max: [header values]

or, if OPTION=2

Give data min, max: [calculated]
This keyword specifies the unscaled range in data
values.

CONTINUE= Continue? [Y}/N
Replot same subset with new values for DISTANCE=
RHO=, PHI=, THETA=, SCALE=, PLOTOPT=, OPTION=
and MINMAX=

Description: In order to draw data in perspective there are two
transformations to perform. First a viewpoint has to be
specified (RHO=, THETA=, PHI= & DISTANCE=). The 'viewpoint'
transformation converts the coordinates in world coordinates
(i.e. pixel positions and image values) into
'eye' coordinates expressed in a coordinate system
centered at the viewpoint. The perspective transfor-
mation produces the actual 2-dim. 'screen' coordinates.
The perspective transformation has a single vanishing
point and the screen axes are parallel to the 'eye'
coordinates. The keywords related to perspective are
DISTANCE= and RHO=

The viewing transformation:
Point in the world coordinate system: (xw,yw,zw,1)
Point in the eye coordinate system: (xe,ye,ze,1)
theta = th, phi = ph.

(xe,ye,ze,1) = (xw,yw,zw,1)V

where V is matrix:


| v11 v12 v13 v14 |
| v21 v22 v23 v24 | =
| v31 v32 v33 v34 |
| v41 v42 v43 v44 |

|-sin(th) -cos(th)*cos(ph) -cos(th)*sin(ph) 0.0 |
| cos(th) -sin(th)*cos(ph) -sin(th)*sin(ph) 0.0 |
| 0.0 sin(ph) -cos(ph) 0.0 |
| 0.0 0.0 rho 1.0 |

Then:

xe = v11*xw + v21*yw
ye = v12*xw + v22*yw + v32*zw
ze = v13*xw + v23*yw + v33*zw + v43

The perspective transformation:
If d is the distance of the eye to the screen and xs, ys
are screen coordinates, then

xs = d * xe / ze
ys = d * ye / ze


|
| | ye
| ys |
<- d -> | |
>------------------------------
eye <- ze ->



Example: Hint: If you want a plot with the same orientation
like 'VIEW' use THETA=-80. PHI=20


Updates: Jul 14, 1994: MV, Document created.