+static void draw_disc(float x, float y, float rad, int sub)
+{
+ int i;
+ glBegin(GL_TRIANGLE_FAN);
+ glVertex2f(x, y);
+ for(i=0; i<sub; i++) {
+ float t = (float)i / (float)(sub - 1);
+ float theta = t * M_PI * 2.0;
+ glVertex2f(cos(theta) * rad + x, sin(theta) * rad + y);
+ }
+ glEnd();
+}
+
+static void draw_line(float x0, float y0, float x1, float y1, float rad)
+{
+ float dx, dy, rx, ry, len;
+
+ dx = x1 - x0;
+ dy = y1 - y0;
+ len = sqrt(dx * dx + dy * dy);
+
+ rx = rad * dy / len;
+ ry = -rad * dx / len;
+
+ draw_disc(x0, y0, rad, 8);
+ draw_disc(x1, y1, rad, 8);
+
+ glBegin(GL_QUADS);
+ glVertex2f(x0 + rx, y0 + ry);
+ glVertex2f(x1 + rx, y1 + ry);
+ glVertex2f(x1 - rx, y1 - ry);
+ glVertex2f(x0 - rx, y0 - ry);
+ glEnd();
+}
+