}
}
+static void
+model_init_dock (Model *model)
+{
+ const int num_objects = 8;
+ const int num_spacers = (num_objects - 1) * (num_objects - 2) / 2;
+ const int num_springs = num_objects - 1;
+ const int distance = 30;
+ double x, y;
+ int i, j;
+ Object *object;
+ Spring *spring;
+ Spacer *spacer;
+
+ memset (model, 0, sizeof *model);
+ model->objects = g_new (Object, num_objects);
+ model->num_objects = num_objects;
+ model->springs = g_new (Spring, num_springs);
+ model->num_springs = num_springs;
+ model->spacers = g_new (Spacer, num_spacers);
+ model->num_spacers = num_spacers;
+ model->k = 0.1;
+
+ model_init_polygons (model);
+ model->polygons = g_new (Polygon, 1);
+ polygon_init_rectangle (&model->polygons[0], -400, 300, 1400, 350);
+ model->num_polygons = 1;
+
+
+ object = model->objects;
+ spring = model->springs;
+ spacer = model->spacers;
+ for (i = 0; i < num_objects; i++, object++) {
+ x = 200 + i * distance / 3;
+ y = 40;
+ object_init (object, x, y, 1);
+ if (i == 0)
+ continue;
+ spring_init (spring++,
+ &model->objects[0],
+ &model->objects[i],
+ distance);
+ for (j = 1; j < num_objects - i; j++) {
+ spacer_init (spacer++, object, object + j, distance);
+ }
+ }
+}
+
typedef struct _Color Color;
struct _Color {
double red, green, blue;
{ "Curtain", model_init_curtain },
{ "Grid", model_init_grid },
{ "Molecule", model_init_molecule },
- { "Wobbly", model_init_wobbly }
+ { "Wobbly", model_init_wobbly },
+ { "Dock", model_init_dock }
};
GtkTreeIter iter;