Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
M_POINT_SET(3)		    Library Functions Manual		M_POINT_SET(3)

NAME
       M_PointSet -- Agar-Math point set structures

SYNOPSIS
       #include	<agar/core.h>
       #include	<agar/gui.h>
       #include	<agar/math/m.h>

DESCRIPTION
       The  M_PointSet	family of structures describe arbitrary	sets of	points
       in space.  They are defined as follows:

       /* Points in R^2	*/
       typedef struct m_point_set2 {
	       M_Vector2 *p;
	       Uint n, nMax;
       } M_PointSet2;

       /* Points in Z^2	*/
       typedef struct m_point_set2i {
	       M_Real w, h;
	       int *x, *y;
	       Uint n, nMax;
       } M_PointSet2i;

       /* Points in R^3	*/
       typedef struct m_point_set3 {
	       M_Vector3 *p;
	       Uint n, nMax;
       } M_PointSet3;

       /* Points in Z^3	*/
       typedef struct m_point_set3i {
	       M_Real w, h, d;		       /* Scaling factor */
	       int *x, *y, *z;
	       Uint n, nMax;
       } M_PointSet3i;

       The points in a M_PointSet[23] are stored under the p array of  vectors
       (see M_Vector(3)).

       The points in M_PointSet[23]i are stored	as separate arrays of integers
       x,  y,  z.   The	w, h and d members specify scaling factors to use when
       converting from an integer set to a real	set.

INITIALIZATION
       void M_PointSetInit2(M_PointSet2	*S)

       void M_PointSetInit3(M_PointSet3	*S)

       void M_PointSetInit2i(M_PointSet2i *S, M_Real w,	M_Real h)

       void M_PointSetInit3i(M_PointSet3i *S, M_Real w,	M_Real h, M_Real d)

       int M_PointSetAlloc2(M_PointSet2	*S, Uint n)

       int M_PointSetAlloc3(M_PointSet3	*S, Uint n)

       int M_PointSetAlloc2i(M_PointSet2i *S, Uint n)

       int M_PointSetAlloc3i(M_PointSet3i *S, Uint n)

       void M_PointSetFree2(M_PointSet2	*S)

       void M_PointSetFree3(M_PointSet3	*S)

       void M_PointSetFree2i(M_PointSet2i *S)

       void M_PointSetFree3i(M_PointSet2i *S)

       M_PointSet2 M_PointSetRead2(AG_DataSource *ds)

       void M_PointSetWrite2(AG_DataSource *ds,	const M_PointSet2 *S)

       M_PointSet3 M_PointSetRead3(AG_DataSource *ds)

       void M_PointSetWrite3(AG_DataSource *ds,	const M_PointSet3 *S)

       M_PointSet2i M_PointSetRead2i(AG_DataSource *ds)

       void M_PointSetWrite2i(AG_DataSource *ds, const M_PointSet2i *S)

       M_PointSet3i M_PointSetRead3i(AG_DataSource *ds)

       void M_PointSetWrite3i(AG_DataSource *ds, const M_PointSet3i *S)

       M_PointSet2 M_POINT_SET2_EMPTY(void)

       M_PointSet3 M_POINT_SET3_EMPTY(void)

       M_PointSet2i M_POINT_SET2I_EMPTY(void)

       M_PointSet3i M_POINT_SET3I_EMPTY(void)

       The M_PointSetInit[23]()	functions initialize a point set in R^2	or R^3
       to the null set.

       The M_PointSetInit[23]i() functions initialize a	point set  in  Z^3  or
       Z^3  to the null	set.  The w, h,	d arguments specify the	scaling	factor
       to use when converting from an integer to a real	point set.

       The M_PointSetAlloc*() functions	allocates  memory  for	the  specified
       number  of  points, returning 0 on success or -1	if insufficient	memory
       is available.

       The M_PointSetFree*() functions free the	point sets, clearing  the  ar-
       rays and	reinitializing the point count to 0.

       The  M_PointSetRead*() and M_TriangleWrite*() functions read or write a
       triangle	structure from/to an AG_DataSource(3).

       The macros M_POINT_SET*_EMPTY() expand to static	initializers  for  any
       of the M_PointSet structures.

OPERATIONS
       int M_PointSetAdd2(M_PointSet2 *S, M_Vector2 v)

       int M_PointSetAdd3(M_PointSet3 *S, M_Vector3 v)

       int M_PointSetAdd2i(M_PointSet2 *S, int x, int y)

       int M_PointSetAdd3i(M_PointSet3i	*S, int	x, int y, int z)

       int M_PointSetCopy2(M_PointSet2 *D, const M_PointSet2 *S)

       int M_PointSetCopy3(M_PointSet3 *D, const M_PointSet3 *S)

       int M_PointSetCopy2i(M_PointSet2i *D, const M_PointSet2i	*S)

       int M_PointSetCopy3i(M_PointSet3i *D, const M_PointSet3i	*S)

       void M_PointSetSort2(M_PointSet2	*S, enum m_point_set_sort_mode2)

       void M_PointSetSort3(M_PointSet3	*S, enum m_point_set_sort_mode3)

       The M_PointSetAdd*() functions insert a new point at the	end of the set
       S.   On	success,  the index of the new point is	returned.  If insuffi-
       cient memory is available, -1 is	returned.

       The M_PointSetCopy*() functions copy the	contents of source set S  into
       destination  set	D, returning 0 on success or -1	if insufficient	memory
       is available.

       The M_PointSetSort[23]()	functions sort the point sets by point coordi-
       nate.  The mode arguments specify the sorting mode:

       enum m_point_set_sort_mode2 {
	       M_POINT_SET_SORT_XY,
	       M_POINT_SET_SORT_YX,
       };
       enum m_point_set_sort_mode3 {
	       M_POINT_SET_SORT_XYZ,
	       M_POINT_SET_SORT_XZY,
	       M_POINT_SET_SORT_YXZ,
	       M_POINT_SET_SORT_YZX,
	       M_POINT_SET_SORT_ZXY,
	       M_POINT_SET_SORT_ZYX,
       };

SEE ALSO
       AG_DataSource(3), AG_Intro(3), M_Circle(3), M_Geometry(3),  M_Plane(3),
       M_Polygon(3), M_Rectangle(3), M_Sphere(3), M_Triangle(3), M_Vector(3)

HISTORY
       The M_PointSet family of	structures first appeared in Agar 1.4.2.

Agar 1.7		       December	21, 2022		M_POINT_SET(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=M_PointSet&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help