plpoly3
( | n , |
x , | |
y , | |
z , | |
draw , | |
ifcc
) ; |
Draws a polygon in 3 space defined by
points in
n
,
x
, and
y
.
Setup like z
plline3
, but differs from that function in that plpoly3
attempts to determine if the polygon is viewable depending on the
order of the points within the vector and the value of
. If the back of
polygon is facing the viewer, then it isn't drawn. If this isn't what
you want, then use ifcc
plline3
instead.
The points are assumed to be in a plane, and the directionality of the plane is determined from the first three points. Additional points do not have to lie on the plane defined by the first three, but if they do not, then the determination of visibility obviously can't be 100% accurate... So if you're 3 space polygons are too far from planar, consider breaking them into smaller polygons. “3 points define a plane” :-).
Bugs: If one of the first two segments is of
zero length, or if they are co-linear, the calculation of visibility
has a 50/50 chance of being correct. Avoid such situations :-). See
x18c.c
for an example of this problem.
(Search for “20.1”).
n
(PLINT
, input)
Number of points defining line.
x
(PLFLT_VECTOR
, input)
A vector containing n
x coordinates of points.
y
(PLFLT_VECTOR
, input)
A vector containing n
y coordinates of points.
z
(PLFLT_VECTOR
, input)
A vector containing n
z coordinates of points.
draw
(PLBOOL_VECTOR
, input)
A vector containing n-1
Boolean values
which control drawing the segments of the polygon. If
is true,
then the polygon segment from index
draw[i]
to
[i]
is drawn,
otherwise, not.
[i+1]
ifcc
(PLBOOL
, input)
If
is true
the directionality of the polygon is determined by assuming the points
are laid out in a counter-clockwise order. Otherwise,
the directionality of the polygon is determined by assuming the points
are laid out in a clockwise order.
ifcc
Redacted form: plpoly3(x, y, z, code)
This function is used in example 18.