typedef struct _Spring Spring;
typedef struct _OffsetSpring OffsetSpring;
typedef struct _Spacer Spacer;
+typedef struct _Anchor Anchor;
typedef struct _Polygon Polygon;
typedef struct _Offset Offset;
typedef struct _Model Model;
int length;
};
+struct _Anchor {
+ Object *object;
+ double x, y;
+};
+
struct _Polygon {
int num_points;
Point *points;
Vector *normals;
- int edge;
+ int enclosing;
};
struct _Model {
OffsetSpring *offset_springs;
int num_spacers;
Spacer *spacers;
+ int num_anchors;
+ Anchor *anchors;
int num_polygons;
Polygon *polygons;
double k;
double friction;
- Object *anchor_object;
- Vector anchor_position;
+ Anchor mouse_anchor;
double theta;
};
void stick_init (Stick *stick, Object *a, Object *b, double length);
void string_init (String *string, Object *a, Object *b, double length);
void spacer_init (Spacer *spacer, Object *a, Object *b, double length);
+void anchor_init (Anchor *anchor, Object *object, double x, double y);
-void polygon_init (Polygon *p, int num_points, ...);
+void polygon_init (Polygon *p, int enclosing, int num_points, ...);
void polygon_init_diamond (Polygon *polygon, double x, double y);
void polygon_init_rectangle (Polygon *polygon, double x0, double y0,
double x1, double y1);
+void polygon_init_enclosing_rectangle (Polygon *polygon, double x0, double y0,
+ double x1, double y1);
void model_fini (Model *model);