vertex

clean-up #25:

attached is a little class that draws polygons in supercollider. with inspiration from processing.
if you want to use the \point type of shape it will look better with smoothing set to false and Vertex.pointSize= 0;

update 101211: attached a simple BezierVertez class. it works like this one.
update 101215: improved the \triangleFan type in vertex.sc.
update 141012: minor update to BezierVertez.sc - added close argument

(
        var win= Window("vertex test", Rect(100, 100, 430, 320), false);
        win.drawHook= {
                Pen.fillColor= Color.white;
                Pen.strokeColor= Color.black;
               
                Pen.use{
                        Pen.translate(10, 10);
                        Vertex.beginShape();
                        Vertex(Point(30, 20));
                        Vertex(Point(85, 20));
                        Vertex(Point(85, 75));
                        Vertex(Point(30, 75));
                        Vertex.endShape(1);             //1 means close
                        Pen.fillStroke;                 //also try fill and stroke
                };
                Pen.use{
                        Pen.translate(110, 10);
                        Vertex.beginShape(\points);
                        Vertex(Point(30, 20));
                        Vertex(Point(85, 20));
                        Vertex(Point(85, 75));
                        Vertex(Point(30, 75));
                        Vertex.endShape();
                        Pen.stroke;
                };
                Pen.use{
                        Pen.translate(210, 10);
                        Vertex.beginShape(\lines);
                        Vertex(Point(30, 20));
                        Vertex(Point(85, 20));
                        Vertex(Point(85, 75));
                        Vertex(Point(30, 75));
                        Vertex.endShape();
                        Pen.stroke;
                };
                Pen.use{
                        Pen.translate(310, 10);
                        Vertex.beginShape();
                        Vertex(Point(30, 20));
                        Vertex(Point(85, 20));
                        Vertex(Point(85, 75));
                        Vertex(Point(30, 75));
                        Vertex.endShape(0);             //0 means not close (default)
                        Pen.stroke;
                };
               
                Pen.use{
                        Pen.translate(10, 110);
                        Vertex.beginShape();
                        Vertex(Point(30, 20));
                        Vertex(Point(85, 20));
                        Vertex(Point(85, 75));
                        Vertex(Point(30, 75));
                        Vertex.endShape(1);             //1 means close
                        Pen.stroke;
                };
                Pen.use{
                        Pen.translate(110, 110);
                        Vertex.beginShape(\triangles);
                        Vertex(Point(30, 75));
                        Vertex(Point(40, 20));
                        Vertex(Point(50, 75));
                        Vertex(Point(60, 20));
                        Vertex(Point(70, 75));
                        Vertex(Point(80, 20));
                        Vertex.endShape();
                        Pen.fillStroke;                 //also try fill and stroke
                };
                Pen.use{
                        Pen.translate(210, 110);
                        Vertex.beginShape(\triangleStrip);
                        Vertex(Point(30, 75));
                        Vertex(Point(40, 20));
                        Vertex(Point(50, 75));
                        Vertex(Point(60, 20));
                        Vertex(Point(70, 75));
                        Vertex(Point(80, 20));
                        Vertex(Point(90, 75));
                        Vertex.endShape();
                        Pen.fillStroke;                 //also try fill and stroke
                };
                Pen.use{
                        Pen.translate(310, 110);
                        Vertex.beginShape(\triangleFan);
                        Vertex(Point(57.5, 50));
                        Vertex(Point(57.5, 15));
                        Vertex(Point(92, 50));
                        Vertex(Point(57.5, 85));
                        Vertex(Point(22, 50));
                        Vertex(Point(57.5, 15));
                        Vertex.endShape();
                        Pen.fillStroke;                 //also try fill and stroke
                };
               
                Pen.use{
                        Pen.translate(10, 210);
                        Vertex.beginShape(\quads);
                        Vertex(Point(30, 20));
                        Vertex(Point(30, 75));
                        Vertex(Point(50, 75));
                        Vertex(Point(50, 20));
                        Vertex(Point(65, 20));
                        Vertex(Point(65, 75));
                        Vertex(Point(85, 75));
                        Vertex(Point(85, 20));
                        Vertex.endShape();
                        Pen.fillStroke;                 //also try fill and stroke
                };
                Pen.use{
                        Pen.translate(110, 210);
                        Vertex.beginShape(\quadStrip);
                        Vertex(Point(30, 20));
                        Vertex(Point(30, 75));
                        Vertex(Point(50, 20));
                        Vertex(Point(50, 75));
                        Vertex(Point(65, 20));
                        Vertex(Point(65, 75));
                        Vertex(Point(85, 20));
                        Vertex(Point(85, 75));
                        Vertex.endShape();
                        Pen.fillStroke;                 //also try fill and stroke
                };
                Pen.use{
                        Pen.translate(210, 210);
                        Vertex.beginShape();
                        Vertex(Point(20, 20));
                        Vertex(Point(40, 20));
                        Vertex(Point(40, 40));
                        Vertex(Point(60, 40));
                        Vertex(Point(60, 60));
                        Vertex(Point(20, 60));
                        Vertex.endShape(1);             //also try 0 here
                        Pen.fillStroke;                 //also try fill and stroke
                };
                Pen.use{
                        Pen.translate(310, 210);
                        Vertex.beginShape();
                        14.do{
                                Vertex(Point(85.rand, 85.rand));
                        };
                        Vertex.endShape(1);             //also try 0 here
                        Pen.fillStroke;                 //also try fill and stroke
                };
        };
        win.front;
)
//http://processing.org/reference/bezierVertex_.html
(
        var win= Window("beziervertex test1", Rect(100, 100, 300, 300), false);
        win.drawHook= {
                Pen.fillColor= Color.white;
                Pen.strokeColor= Color.black;
                BezierVertex.beginShape(Point(30, 20));
                BezierVertex(Point(80, 0), Point(80, 75), Point(30, 75));
                BezierVertex.endShape;
                Pen.stroke;                             //also try fillStroke and fill
        };
        win.front;
)

//http://processing.org/reference/bezierVertex_.html
(
        var win= Window("beziervertex test2", Rect(100, 100, 300, 300), false);
        win.drawHook= {
                Pen.fillColor= Color.white;
                Pen.strokeColor= Color.black;
                BezierVertex.beginShape(Point(30, 20));
                BezierVertex(Point(80, 0), Point(80, 75), Point(30, 75));
                BezierVertex(Point(50, 80), Point(60, 25), Point(30, 20));
                BezierVertex.endShape;
                Pen.fillStroke;                 //also try stroke and fill
        };
        win.front;
)

AttachmentSize
Binary Data Vertex.sc1.6 KB
Binary Data BezierVertex.sc342 bytes