plpoly3: Draw a polygon in 3 space

plpoly3 ( n ,
  x ,
  y ,
  z ,
  draw ,
  ifcc );
 

Draws a polygon in 3 space defined by n points in x , y , and z . Setup like 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 ifcc. If the back of polygon is facing the viewer, then it isn't drawn. If this isn't what you want, then use 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 draw[i] is true, then the polygon segment from index [i] to [i+1] is drawn, otherwise, not.

ifcc (PLBOOL, input)

If ifcc 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.

Redacted form: plpoly3(x, y, z, code)

This function is used in example 18.