I don't want to keep writing the same code over and over.

I have written generic Point classes, line/line intersection algorithms and Layer administration code more times than I can remember. I don't like menial programming, so this is effectively my code library. But you can use it too!

The language used is Processing, which is a mostly-Java-syntax language. I hardly ever use Java-specific ninja code, so rewriting any of these snippets to your favourite language is less than a minute's worth of work, typically.

RoundedRect snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
final float CIRCLE_ARC = 4.0 * (sqrt(2)-1)/3.0;

void setup() {
  size(600,600);
  noLoop();
}

void draw() {
  roundrect(10,10,width-20,height-20,50,CIRCLE_ARC);
}

/**
 * Draw a rounded rect using bezier corners.
 * k controls the tightness of the rounded corner.
 */
void roundrect(float x, float y, float w, float h, float r, float k) {
  float xw=x+w, yh=y+h, xr=x+r, yr=y+r, mk=1-k, km=k-1;
  beginShape();
  vertex(xr, y);
  vertex(xw-r, y);
  bezierVertex(xw + km*r, y, xw, y + mk*r, xw, yr);
  vertex(xw, yh-r);
  bezierVertex(xw, yh + km*r, xw + km*r, yh, xw-r, yh);
  vertex(xr, yh);
  bezierVertex(x + mk*r, yh, x, yh + km*r, x, yh-r);
  vertex(x, yr);
  bezierVertex(x, y + mk*r, x + mk*r, y, xr, y);
  endShape(CLOSE);
}

Back to the main page

Download all


Written and maintained by Mike "Pomax" Kamermans. All code snippets on this site are "do whatever you want with it" licensed.