GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
SK(3) FreeBSD Library Functions Manual SK(3)

SKAgar dimensioned 2D sketch

#include <agar/core.h>
#include <agar/sk.h>

The Agar SK class implements a general-purpose 2D "sketching" engine with dimensioning and geometrical constraint solving. Sketches define a set of elements and a set of relations between those elements.

Elements are organized in a tree (the same structure is used to described group and leaf nodes). Each element in the graph is associated with a transformation matrix. The major sketch elements are points, lines and arcs, but other types can be added through a class registration interface.

Relations represent geometric constraints affecting points, lines, circles, segments and arcs. The following constraints are implemented:

  • Parallelism
  • Incidence
  • Perpendicularity
  • Tangency
  • Concentricity
  • Colinearity
  • Explicit distance
  • Explicit angle

The SK_View(3) widget is commonly used to display and edit SK objects.

AG_Object(3) -> SK.

SK *
(void *parent, const char *name);

The () function allocates, initializes, and attaches a SK object.

void
SK_RegisterClass(SK_NodeOps *ops);


void
(void *node, const SK_NodeOps *ops, Uint flags);


void *
(void *pnode, const SK_NodeOps *ops, Uint flags);


void
(void *pnode, void *node);


void
(void *pnode, void *node);

The () function registers a new node class, described by the given SK_NodeOps structure.

The () function initializes the given SK_Node structure. It is usually invoked from node constructor functions. ops points to the SK_NodeOps structure which contains class information. The flags argument should be 0. The SK_NodeAdd() variant also allocates, initializes and attaches the node to a parent node.

The () and SK_NodeDetach() functions attach/detach a node to/from a given parent.

These functions multiply a node's transformation matrix T with a translation, scaling or rotation matrix. They are only aliases for M_Matrix * functions, except that they accept a pointer to a node instead of a matrix.

void (SK_Node *node, M_Vector3 v)

void (SK_Node *node, M_Real x, M_Real y)

void (SK_Node *node, M_Vector3 v)

void (SK_Node *node, M_Real theta, M_Vector3 axis)

void (SK_Node *node, M_Real degrees, M_Vector3 axis)

void (void *node, M_Matrix44 *T)

The
(); functions multiply T by a 2D translation matrix.

The
(); function multiplies T by a 2D scaling matrix.


(); multiply T by a 2D rotation matrix. Angles are given in radians, except for
(); variants which accept angular arguments in degrees.


(); generates a rotation of theta radians around axis. The
SK_Rotate*(); variants with the "d" suffix accept angles in degrees instead of radians.

The
(); function returns a matrix which is the product of the transformation matrices of the given node and all of its parents.

M_Matrix(3), M_Vector(3), SG_Intro(3), SK_View(3)

The SK engine first appeared in Agar 1.6.0.

December 21, 2022 Agar 1.7

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.