joint.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  arc
struct  rotation
struct  direct
struct  joint
struct  jointH
struct  hold_point
struct  j_set_desc
struct  hold
struct  funtab


#define FALSE   0
#define TRUE   1
#define ARC_UNSET   0x0
#define ARC_PATH   0x1
#define ARC_ARC   0x2
#define ARC_LIST   0x4
#define ARC_BOTH   0x8
#define MAGIC_JOINT_STRUCT   0x4a4f4900 /* 1246710016 */
#define MAGIC_JOINT_HANDLE   0x44330048 /* 1144193096 */
#define ID_FIXED   -1
#define HOLD_PT_GOOD   0x1
#define HOLD_FLAG_TRIED   0x1
#define MAGIC_HOLD_STRUCT   0x684f4c63 /* 1750027363 */


void vls_col_item (struct bu_vls *str, const char *cp)
void vls_col_eol (struct bu_vls *str)

Detailed Description

Joint and constraint information.

A joint has to contain all the information to describe how two segments move in relationship to each other.

The two segments are defined by the arc given. The upper arc is the fixed part, the lower part is the "moving" part. The arc can be completely rooted or a partial description.

In the simplest case, a joint moves in only one direction (1 degree of freedom) For rotations, this can be described completely as a quaternion. For a slider, this can be described completely as a unit vector.

For two degrees of freedom, Two quaternions describe rotation one then rotation two. (Math: The two quaternions can be added "?" to make a new quaternion that represents the movement around both axis) For sliders, two unit vectors and a starting point define the plane used.

For three degrees of freedom, three quaternions or three unit vectors.

The reason we use the three unit vectors rather than the more usual normal and closest point, is that we can then use a simple parametric statement of how to move. It would be best that the two vectors be at right angles to each other, but that is not required.

This use of unit vectors allows for non-axis aligned movements, it allows for non-square and non-cube movement.

Each degree of freedom contains both an upper and lower bound as well as the current value of the joint. If upper < lower then this degree of freedom is not used.

Definition in file joint.h.

Macro Definition Documentation

#define FALSE   0

Definition at line 61 of file joint.h.

#define TRUE   1

Definition at line 65 of file joint.h.

if (dbip == DBI_NULL) { \
Tcl_AppendResult(INTERP, "A database is not open!\n", (char *)NULL); \
return TCL_ERROR; \
#define DBI_NULL
Definition: raytrace.h:827

Definition at line 69 of file joint.h.

if (dbip->dbi_read_only) { \
Tcl_AppendResult(INTERP, "Sorry, this database is READ-ONLY\n", (char *)NULL); \
return TCL_ERROR; \

Definition at line 76 of file joint.h.

#define ARC_UNSET   0x0

Definition at line 94 of file joint.h.

#define ARC_PATH   0x1

Definition at line 95 of file joint.h.

#define ARC_ARC   0x2

Definition at line 96 of file joint.h.

#define ARC_LIST   0x4

Definition at line 97 of file joint.h.

#define ARC_BOTH   0x8

Definition at line 98 of file joint.h.

#define MAGIC_JOINT_STRUCT   0x4a4f4900 /* 1246710016 */

Definition at line 130 of file joint.h.

#define MAGIC_JOINT_HANDLE   0x44330048 /* 1144193096 */

Definition at line 137 of file joint.h.

#define ID_FIXED   -1

Definition at line 154 of file joint.h.

#define HOLD_PT_GOOD   0x1

Definition at line 156 of file joint.h.

#define HOLD_FLAG_TRIED   0x1

Definition at line 177 of file joint.h.

#define MAGIC_HOLD_STRUCT   0x684f4c63 /* 1750027363 */

Definition at line 185 of file joint.h.


Definition at line 187 of file joint.h.

Function Documentation

void vls_col_item ( struct bu_vls str,
const char *  cp 

Definition at line 45 of file columns.c.

References bu_vls_putc(), COLUMNS, and TERMINAL_WIDTH.

Referenced by ged_joint2().

Here is the call graph for this function:

void vls_col_eol ( struct bu_vls str)

Definition at line 73 of file columns.c.

References bu_vls_putc().

Referenced by ged_joint2().

Here is the call graph for this function: