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

FreeBSD Manual Pages

  
 
  

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

NAME
       M_Geometry -- Agar-Math geometrical structures

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

DESCRIPTION
       The  Agar-Math library implements a number of algorithms	and operations
       on related to geometrical structures.  The following  basic  structures
       are defined, see	their respective manual	pages for more details:

       M_Line(3)	Line segment or	ray in R^2 (M_Line2) or	R^3 (M_Line3).
       M_Circle(3)	Circle in R^2 (M_Circle2) or R^3 (M_Circle3).
       M_Sphere(3)	Sphere in R^3.
       M_Plane(3)	Plane in R^3 (M_Plane).
       M_Triangle(3)	Triangle in R^2	(M_Triangle2) or R^3 (M_Triangle3).
       M_Rectangle(3)	Rectangle in R^2 (M_Rectangle2)	or R^3 (M_Rectangle3).
       M_Polygon(3)	Polygon	in R^2.
       M_Polyhedron(3)	Polyhedron in R^3.

GENERIC	GEOMETRIC ENTITIES
       A  number  of routines (e.g., computation of intersections) return sets
       of zero or more geometrical structures of different types, depending on
       the

       The M_Geom2 structure defines a geometrical entity in R^2:

       typedef struct m_geom2 {
	       M_GeomType type;
	       union {
		       M_Vector2    point;
		       M_Line2	    line;
		       M_Circle2    circle;
		       M_Triangle2  triangle;
		       M_Rectangle2 rectangle;
		       M_Polygon    polygon;
	       } g;
       } M_Geom2;

       Similarly, M_Geom3 defines an entity in R^3:

       typedef struct m_geom3 {
	       M_GeomType type;
	       union {
		       M_Vector3    point;
		       M_Line3	    line;
		       M_Circle3    circle;
		       M_Triangle3  triangle;
		       M_Rectangle3 rectangle;
		       M_Polygon    polygon;
		       M_Sphere	    sphere;
		       M_Plane	    plane;
		       M_Polyhedron polyhedron;
	       } g;
       } M_Geom3;

       The type	field can take on the following	values:

       M_NONE	     Undefined type
       M_POINT	     An	M_Vector2(3) or	M_Vector3(3).
       M_LINE	     An	M_Line2(3) or M_Line3(3).
       M_CIRCLE	     An	M_Circle2(3) or	M_Circle3(3).
       M_POLYGON     An	M_Polygon(3).
       M_TRIANGLE    An	M_Triangle2(3) or M_Triangle3(3).
       M_RECTANGLE   An	M_Rectangle2(3)	or M_Rectnagle3(3).
       M_SPHERE	     An	M_Sphere(3).
       M_PLANE	     An	M_Plane3(3).

GENERIC	GEOMETRIC ENTITIES: SETS
       Sets of generic geometric entities in R^2 are described by  the	struc-
       ture:

       typedef struct m_geom_set2 {
	       M_Geom2 *g;
	       Uint n;
       } M_GeomSet2;
       Similarly for R^3:

       typedef struct m_geom_set3 {
	       M_Geom3 *g;
	       Uint n;
       } M_GeomSet3;

       The following routines allow the	manipulation of	these sets.

       M_GeomSet2 M_GEOM_SET_EMPTY(void)

       M_GeomSet3 M_GEOM_SET_EMPTY(void)

       void M_GeomSetAdd2(M_GeomSet2 *S, const M_Geom2 *g)

       void M_GeomSetAdd3(M_GeomSet3 *S, const M_Geom3 *g)

       void M_GeomSetFree2(M_GeomSet2 *S)

       void M_GeomSetFree3(M_GeomSet3 *S)

       The  M_GEOM_SET_EMPTY()	macro  is provided as a	static initializer for
       M_GeomSet2 and M_GeomSet3.

       The M_GeomSetAdd2() and M_GeomSetAdd3() functions insert	a copy of  the
       entity g	into the geometric set S.

       M_GeomSetFree2()	 and  M_GeomSetFree3() release the resources allocated
       by a geometric set.

SEE ALSO
       AG_Intro(3), M_Matrix(3), M_Real(3), M_Vector(3)

HISTORY
       The M_Geometry structure	first appeared in Agar 1.3.4.

Agar 1.7		       December	21, 2022		 M_GEOMETRY(3)

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

home | help