###############################################################################
# #
# Copyright © 1989-1991 by Artificial Horizons®, Inc. All rights reserved. #
# #
# This material constitutes the trade secrets and confidential, #
# proprietary information of Bruce Factor and Curtis Priem, and is #
# under license to Artificial Horizons, Inc. The material is not #
# to be disclosed, reproduced, copied, or used in any manner not #
# permitted under license from Artificial Horizons, Inc. For more #
# information email "ahi-interest@ahi.com". #
# #
###############################################################################
EXTENT(3GC) AVIATOR GRAPHICS INTERFACE CLASSES EXTENT(3GC)
NAME
FB_CLASS__EXTENT_2DX, FB_CLASS__EXTENT_3DX, FB_CLASS__EXTENT_4DX, -
extent classes
SYNOPSIS
#include <agi.h>
register Fbuffer fbp;
fbstart(fbp, FB_CLASS__EXTENT_2DX) {
} fbend(fbp);
fbstart(fbp, FB_CLASS__EXTENT_3DX) {
} fbend(fbp);
fbstart(fbp, FB_CLASS__EXTENT_4DX) {
} fbend(fbp);
DESCRIPTION
The extent classes are used for bounding box checking or determining
if the extent of an object is hidden, visible, or intersects the
clipping pyramid. The extent classes are only useful with the matrix
classes FB_CLASS__MATRIX_MV4X3_CLIP_DC4X3 and
FB_CLASS__MATRIX_MV4X3_CLIP_DC4X4. agi does not check at run time to
see if the matrix class has been initialized to one of these classes.
The class FB_CLASS__EXTENT_2DX is for determining the extent of a 2D
object. The legal coordinate members for this class are:
FB_MEMBER__X
FB_MEMBER__Y
The class FB_CLASS__EXTENT_3DX is for determining the extent of a 3D
object. The legal coordinate members for this class are:
FB_MEMBER__X
FB_MEMBER__Y
FB_MEMBER__Z
The class FB_CLASS__EXTENT_4DX is for determining the extent of a 4D
object. The legal coordinate members for this class are:
FB_MEMBER__X
FB_MEMBER__Y
FB_MEMBER__Z
FB_MEMBER__W
MEMBERS
The following public members can be accessed by using routines
fbput(3G) and fbget(3G). These 32 bit numbers can be signed integer,
signed 16.16 fixed point, or IEEE single precision floating point
format. The coordinate (0,0) is the upper left corner of the paint
canvas, or the upper left corner of the frame buffer when running
without a windowing system.
FB_MEMBER__X__INTEGER
FB_MEMBER__X__FIXED
FB_MEMBER__X__FLOAT
X is the horizontal location of the point of the object
currently being defined before transformation.
FB_MEMBER__Y__INTEGER
FB_MEMBER__Y__FIXED
FB_MEMBER__Y__FLOAT
Y is the vertical location of the point of the object
currently being defined before transformation.
FB_MEMBER__Z__INTEGER
FB_MEMBER__Z__FIXED
FB_MEMBER__Z__FLOAT
Z is the depth of the point of the object currently being
defined before transformation.
FB_MEMBER__W__INTEGER
FB_MEMBER__W__FIXED
FB_MEMBER__W__FLOAT
W is the homogeneous value of the point of the object
currently being defined before transformation.
The following public members can be accessed by using the routine
fbget(3G):
FB_MEMBER__HIDDEN__LOGICAL
If HIDDEN is true, the points describing the extent of the
current object which were stored into the frame buffer since
the last RESET are all hidden.
FB_MEMBER__INTERSECT__LOGICAL
If INTERSECT is true, the points describing the extent of the
current object which were stored into the frame buffer since
the last RESET intersect one or more clip planes.
FB_MEMBER__VISIBLE__LOGICAL
If VISIBLE is true, the points describing the extent of the
current object which were stored into the frame buffer since
the last RESET are all visible.
FUNCTIONS
The following public functions can be called by using the fbcall(3G)
routine:
FB_FUNCTION__STORE_INCREMENT
The STORE function stores the current point (X, Y, Z, and W)
into the frame buffer, the point is transformed, and the
current state of the extent is updated.
FB_FUNCTION__LOAD
The LOAD function loads the current extent status in the frame
buffer into the current members (HIDDEN, INTERSECT, VISIBLE).
FB_FUNCTION__RESET
The RESET function resets the current extent status in the
frame buffer. This should be done before the extents of the
object are stored into the frame buffer.
SEE ALSO
fbcall(3G), fbend(3G), fbget(3G), fbput(3G), fbstart(3G)
PERFORMANCE
AGI Release 1.8 Last change: 25 December 1991