Revision: 76361
http://sourceforge.net/p/brlcad/code/76361
Author: starseeker
Date: 2020-07-17 16:45:51 +0000 (Fri, 17 Jul 2020)
Log Message:
-----------
Most of the headers are used in multiple files, but joint.h is specific to the
joint command.
Modified Paths:
--------------
brlcad/branches/bioh/src/libged/CMakeLists.txt
Added Paths:
-----------
brlcad/branches/bioh/src/libged/joint/joint.h
Removed Paths:
-------------
brlcad/branches/bioh/src/libged/joint.h
Modified: brlcad/branches/bioh/src/libged/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libged/CMakeLists.txt 2020-07-17 16:44:16 UTC
(rev 76360)
+++ brlcad/branches/bioh/src/libged/CMakeLists.txt 2020-07-17 16:45:51 UTC
(rev 76361)
@@ -427,7 +427,7 @@
brep/ged_brep.h
check/check_private.h
ged_private.h
- joint.h
+ joint/joint.h
osg.cpp
pnts_util.h
qray.h
Copied: brlcad/branches/bioh/src/libged/joint/joint.h (from rev 76360,
brlcad/branches/bioh/src/libged/joint.h)
===================================================================
--- brlcad/branches/bioh/src/libged/joint/joint.h
(rev 0)
+++ brlcad/branches/bioh/src/libged/joint/joint.h 2020-07-17 16:45:51 UTC
(rev 76361)
@@ -0,0 +1,198 @@
+/* J O I N T . H
+ * BRL-CAD
+ *
+ * Copyright (c) 2004-2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @file libged/joint.h
+ *
+ * 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.
+ */
+
+#ifndef LIBGED_JOINT_H
+#define LIBGED_JOINT_H
+
+
+#ifndef FALSE
+# define FALSE 0
+#endif
+
+#ifndef TRUE
+# define TRUE 1
+#endif
+
+/* NB: The quaternions should (MUST?) have zero twist! */
+struct arc {
+ struct bu_list l;
+ int type;
+ char **arc;
+ int arc_last;
+ char **original;
+ int org_last;
+};
+
+
+#define ARC_UNSET 0x0
+#define ARC_PATH 0x1
+#define ARC_ARC 0x2
+#define ARC_LIST 0x4
+#define ARC_BOTH 0x8
+
+struct rotation {
+ quat_t quat; /* direction of rotation */
+ double lower; /* min value in degrees */
+ double upper; /* max value in degrees */
+ double current; /* what the joint is currently at in degrees */
+ double accepted; /* what was the last accepted value of joint */
+};
+
+
+struct direct {
+ vect_t unitvec;
+ double lower;
+ double upper;
+ double current;
+ double last;
+ double accepted;
+ int changed;
+};
+struct joint {
+ struct bu_list l;
+ int uses;
+ char *name;
+ struct arc path;
+ vect_t location;
+
+ struct rotation rots[3];
+ struct direct dirs[3];
+
+ struct animate *anim;
+};
+#define MAGIC_JOINT_STRUCT 0x4a4f4900 /* 1246710016 */
+struct jointH {
+ struct bu_list l;
+ struct joint *p;
+ int arc_loc;
+ int flag;
+};
+#define MAGIC_JOINT_HANDLE 0x44330048 /* 1144193096 */
+/* Constraints
+ *
+ * Standard double linked list stuff.
+ * name of the constraint (not required)
+ * Set of is a linked list of joint HANDLES!
+ */
+struct hold_point {
+ int type; /* SOLID ID + fixed */
+ /* everything should reduce to a point at run time. */
+ vect_t point;
+ int vertex_number;
+
+ struct arc arc; /* Path to object */
+ struct db_full_path path; /* after processing */
+ int flag;
+};
+#define ID_FIXED -1
+
+#define HOLD_PT_GOOD 0x1
+
+struct j_set_desc {
+ char *joint;
+ struct arc path;
+ struct arc exclude;
+};
+struct hold {
+ struct bu_list l;
+ char *name;
+ /* set of joints is defined by joint to grip list of joints */
+ struct j_set_desc j_set;
+ char *joint;
+ struct bu_list j_head;
+ struct hold_point effector;
+ struct hold_point objective;
+ double weight;
+ int priority;
+ int flag;
+ double eval;
+};
+#define HOLD_FLAG_TRIED 0x1
+/*
+ * Objective can be one of:
+ * POINT, LINE, LINE_SEGMENT, PLANE, FACE
+ *
+ * The objective can be defined in terms of:
+ * GRIPs, JOINTs or FIXED POINTs
+ */
+#define MAGIC_HOLD_STRUCT 0x684f4c63 /* 1750027363 */
+
+#define FUNTAB_UNLIMITED -1
+
+struct funtab {
+ char *ft_name;
+ char *ft_parms;
+ char *ft_comment;
+ int (*ft_func)();
+ int ft_min;
+ int ft_max;
+ int tcl_converted;
+};
+
+
+void vls_col_item(struct bu_vls *str, const char *cp);
+void vls_col_eol(struct bu_vls *str);
+
+#endif /* LIBGED_JOINT_H */
+
+/*
+ * Local Variables:
+ * mode: C
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */
Deleted: brlcad/branches/bioh/src/libged/joint.h
===================================================================
--- brlcad/branches/bioh/src/libged/joint.h 2020-07-17 16:44:16 UTC (rev
76360)
+++ brlcad/branches/bioh/src/libged/joint.h 2020-07-17 16:45:51 UTC (rev
76361)
@@ -1,198 +0,0 @@
-/* J O I N T . H
- * BRL-CAD
- *
- * Copyright (c) 2004-2020 United States Government as represented by
- * the U.S. Army Research Laboratory.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this file; see the file named COPYING for more
- * information.
- */
-/** @file libged/joint.h
- *
- * 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.
- */
-
-#ifndef LIBGED_JOINT_H
-#define LIBGED_JOINT_H
-
-
-#ifndef FALSE
-# define FALSE 0
-#endif
-
-#ifndef TRUE
-# define TRUE 1
-#endif
-
-/* NB: The quaternions should (MUST?) have zero twist! */
-struct arc {
- struct bu_list l;
- int type;
- char **arc;
- int arc_last;
- char **original;
- int org_last;
-};
-
-
-#define ARC_UNSET 0x0
-#define ARC_PATH 0x1
-#define ARC_ARC 0x2
-#define ARC_LIST 0x4
-#define ARC_BOTH 0x8
-
-struct rotation {
- quat_t quat; /* direction of rotation */
- double lower; /* min value in degrees */
- double upper; /* max value in degrees */
- double current; /* what the joint is currently at in degrees */
- double accepted; /* what was the last accepted value of joint */
-};
-
-
-struct direct {
- vect_t unitvec;
- double lower;
- double upper;
- double current;
- double last;
- double accepted;
- int changed;
-};
-struct joint {
- struct bu_list l;
- int uses;
- char *name;
- struct arc path;
- vect_t location;
-
- struct rotation rots[3];
- struct direct dirs[3];
-
- struct animate *anim;
-};
-#define MAGIC_JOINT_STRUCT 0x4a4f4900 /* 1246710016 */
-struct jointH {
- struct bu_list l;
- struct joint *p;
- int arc_loc;
- int flag;
-};
-#define MAGIC_JOINT_HANDLE 0x44330048 /* 1144193096 */
-/* Constraints
- *
- * Standard double linked list stuff.
- * name of the constraint (not required)
- * Set of is a linked list of joint HANDLES!
- */
-struct hold_point {
- int type; /* SOLID ID + fixed */
- /* everything should reduce to a point at run time. */
- vect_t point;
- int vertex_number;
-
- struct arc arc; /* Path to object */
- struct db_full_path path; /* after processing */
- int flag;
-};
-#define ID_FIXED -1
-
-#define HOLD_PT_GOOD 0x1
-
-struct j_set_desc {
- char *joint;
- struct arc path;
- struct arc exclude;
-};
-struct hold {
- struct bu_list l;
- char *name;
- /* set of joints is defined by joint to grip list of joints */
- struct j_set_desc j_set;
- char *joint;
- struct bu_list j_head;
- struct hold_point effector;
- struct hold_point objective;
- double weight;
- int priority;
- int flag;
- double eval;
-};
-#define HOLD_FLAG_TRIED 0x1
-/*
- * Objective can be one of:
- * POINT, LINE, LINE_SEGMENT, PLANE, FACE
- *
- * The objective can be defined in terms of:
- * GRIPs, JOINTs or FIXED POINTs
- */
-#define MAGIC_HOLD_STRUCT 0x684f4c63 /* 1750027363 */
-
-#define FUNTAB_UNLIMITED -1
-
-struct funtab {
- char *ft_name;
- char *ft_parms;
- char *ft_comment;
- int (*ft_func)();
- int ft_min;
- int ft_max;
- int tcl_converted;
-};
-
-
-void vls_col_item(struct bu_vls *str, const char *cp);
-void vls_col_eol(struct bu_vls *str);
-
-#endif /* LIBGED_JOINT_H */
-
-/*
- * Local Variables:
- * mode: C
- * tab-width: 8
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits