.\"##
.\" $XConsortium: p054,v 5.2 94/04/17 20:54:53 rws Exp $
.\"##
.\"## 
$XMCOPY
.\"## Copyright (c) 1990, 1991 by Sun Microsystems, Inc. 
.\"## 
.\"##                         All Rights Reserved
.\"## 
.\"## Permission to use, copy, modify, and distribute this software and its 
.\"## documentation for any purpose and without fee is hereby granted, 
.\"## provided that the above copyright notice appear in all copies and that
.\"## both that copyright notice and this permission notice appear in 
.\"## supporting documentation, and that the name of Sun Microsystems,
.\"## not be used in advertising or publicity 
.\"## pertaining to distribution of the software without specific, written 
.\"## prior permission.  
.\"## 
.\"## SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
.\"## INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
.\"## EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
.\"## CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
.\"## USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
.\"## OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\"## PERFORMANCE OF THIS SOFTWARE.
.TH "EVALUATE VIEW ORIENTATION MATRIX 3" 3P "29 February 1991"
.SH NAME
EVALUATE VIEW ORIENTATION MATRIX 3 \- calculate a transformation matrix that
orients the View Reference Coordinate (VRC) system in the World Coordinate
(WC) system
.SH SYNOPSIS
.SS C Syntax
.ft B
.ta 1.25i 3i
.nf
void
peval_view_ori_matrix3 ( vrp, vpn, vup, error_ind, m )
Ppoint3	*vrp;	\fIview reference point\fP
Pvec3	*vpn;	\fIview plane normal\fP
Pvec3	*vup;	\fIview up vector\fP
Pint	*error_ind;	\fIOUT error indicator\fP
Pmatrix3	m;	\fIOUT view orientation matrix\fP
.fi
.ft R
.SS Required PHIGS Operating States
(PHOP, *, *, *)
.SH DESCRIPTION
.SS Purpose
Use \s-2EVALUATE VIEW ORIENTATION MATRIX 3\s+2 to calculate a
\fIview orientation matrix\fP, used to transform World Coordinates (WC) to
View Reference Coordinates (VRC).
This matrix establishes the \fIu\fP, \fIv\fP and \fIn\fP VRC axes
in relation to World Coordinate Space.
The \fIview orientation matrix\fP calculated by this function can be
passed as an argument to \s-2SET VIEW REPRESENTATION 3\s+2.
.LP
See the descriptions of the functions \s-2SET VIEW REPRESENTATION 3\s+2 and
\s-2EVALUATE VIEW MAPPING MATRIX 3\s+2 in this function reference
for more information.
.SS C Input Parameters
.IP \fIvrp\fP
A pointer to a Ppoint3 structure containing
\fIx\fP, \fIy\fP and \fIz\fP
world coordinates that specify the view reference point.
Ppoint3 is defined in phigs.h as follows:
.sp
.ta .5i +1.0i +1i
.nf
typedef struct {
.sp .2
	Pfloat	x;	/* x coordinate */
	Pfloat	y;	/* y coordinate */
	Pfloat	z;	/* z coordinate */
.sp .2
} Ppoint3;
.fi
.IP \fIvpn\fP
A pointer to a Pvec3 structure containing
\fIx\fP, \fIy\fP, and \fIz\fP
World Coordinate values that specify the view plane normal vector.
Pvec3 is defined in phigs.h as follows:
.sp
.ta .5i +1i +1i
.nf
typedef struct {
.sp .2
	Pfloat	delta_x;	/* x magnitude */
	Pfloat	delta_y;	/* y magnitude */
	Pfloat	delta_z;	/* z magnitude */
.sp .2
} Pvec3;
.fi
.IP \fIvup\fP
A pointer to a Pvec3 structure containing
\fIx\fP, \fIy\fP, and \fIz\fP
world coordinate values that specify the view up vector.
Pvec3 is defined above.
.SS C Output Parameters
.IP \fIerror_ind\fP
A pointer to the location to store the error number of any error detected
by this function.
.IP \fIm\fP
The \s-2\&3D\s+2 homogeneous (4 \(mu 4) view orientation matrix.
Pmatrix3 is defined in phigs.h as follows:
.IP
typedef  Pfloat  Pmatrix3[4][4];
.SS Execution
If the input parameters are consistent and well-defined,
\s-2EVALUATE VIEW ORIENTATION MATRIX 3\s+2 returns a \s-2\&3D\s+2 homogeneous
(4\ \(mu\ 4) transformation matrix in the output parameter
\fIview orientation matrix\fP.
This matrix transforms World Coordinates to View Reference Coordinates
according to the values of the input parameters.
.LP
The \fIview reference point\fP defines the point in World Coordinate
Space that is to be used as the origin of the View Reference Coordinate
system.
It is specified as a \s-2\&3D\s+2 world coordinate point
and is usually a point on or near the object to be viewed.
.LP
The \fIview plane normal\fP is a \s-2\&3D\s+2 vector defined
in World Coordinates relative to the view reference point.
It defines the \fIn\fP axis  of the VRC system.
The plane in WC that contains the view reference point and is perpendicular
to the view plane normal is called the \fIview reference plane\fP.
.LP
The \fIview up vector\fP is a \s-2\&3D\s+2 vector defined
in World Coordinates relative to the view reference point.
The projection of this vector onto the view reference plane parallel to
the \fIview plane normal\fP determines the \fIv\fP axis of the VRC system.
.LP
The \fIu\fP axis of VRC is determined so that the \fIuvn\fP axes form a
right-handed coordinate system.
.SH ERRORS
.IP 002
Ignoring function, function requires state (PHOP, *, *, *)
.IP 159
Ignoring function, the view plane normal vector has length zero
.IP 160
Ignoring function, the view up vector has length zero
.IP 161
Ignoring function, the view up and view plane normal vectors
are parallel thus the viewing coordinate system cannot be established
