load("zegraph.dll"); PI2 = 6.28318530717959; class Shape2D { function plus(size=5) { line = zegraph("line"); vert = zegraph("vertex"); line.type("lines"); line.vertex(vert); d = size / 2.0; vert.add(-d, 0, 0, d, 0, 0, 0, -d, 0, 0, d, 0); return line; } function cross(size=5) { line = zegraph("line"); vert = zegraph("vertex"); line.type("lines"); line.smooth(true); line.vertex(vert); d = size / 2.0; vert.add(-d, -d, 0, d, d, 0, -d, d, 0, d, -d, 0); return line; } function triangle(size=5) { poly = zegraph("polygon"); vert = zegraph("vertex"); poly.type("triangles"); poly.smooth(true); poly.vertex(vert); dx = size / 2.0; dy = sqrt(size*size + dx*dx) / 2.0; vert.add(0, dy, 0, -dx, -dy, 0, dx, -dy, 0); return poly; } function square(size=5) { poly = zegraph("polygon"); vert = zegraph("vertex"); poly.type("quads"); poly.vertex(vert); d = size / 2.0; vert.add(-d, -d, 0, d, -d, 0, d, d, 0, -d, d, 0); return poly; } function diamond(size=5) { poly = zegraph("polygon"); vert = zegraph("vertex"); poly.type("quads"); poly.smooth(true); poly.vertex(vert); d = size / 2.0; vert.add(-d, 0, 0, 0, -d, 0, d, 0, 0, 0, d, 0); return poly; } function circle(size=5) { r = size / 2.0; d = PI2 / 32; vert = zegraph("vertex"); line = zegraph("line"); line.type("loop"); line.smooth(true); line.vertex(vert); for (a = 0.0; a < PI2; a += d) { x = r*cos(a); y = r*sin(a); vert.add(x, y, 0); } return line; } function pie(size=5) { r = size / 2.0; d = PI2 / 32; vert = zegraph("vertex"); poly = zegraph("polygon"); poly.type("trianglefan"); poly.smooth(true); poly.vertex(vert); for (a = 0.0; a <= PI2; a += d) { x = r*cos(a); y = r*sin(a); vert.add(x, y, 0); } return poly; } }