<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 08.00.0681.000">
<TITLE>Classes v2, thoughts/suggestions please</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">T</FONT><FONT SIZE=2 FACE="Arial">hanks</FONT> <FONT SIZE=2 FACE="Arial">to</FONT> <FONT SIZE=2 FACE="Arial">A</FONT><FONT SIZE=2 FACE="Arial">lans ins</FONT><FONT SIZE=2 FACE="Arial">ights i have come up with a working class for a square, over</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">complicated probably but it lays the groundwork for my polygon class which will iterate over something to generate an n-sided p</FONT><FONT SIZE=2 FACE="Arial">o</FONT><FONT SIZE=2 FACE="Arial">lygon.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">If anyone is interested in actually run</FONT><FONT SIZE=2 FACE="Arial">ning/testing this you need to get hold of pgyle</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">t</FONT><FONT SIZE=2 FACE="Arial"> 1.1,</FONT><FONT SIZE=2 FACE="Arial"></FONT></SPAN><SPAN LANG="en-us"> </SPAN><A HREF="http://pyglet.org/"><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><U></U></SPAN><U><SPAN LANG="en-gb"></SPAN></U><U><SPAN LANG="en-gb"><FONT COLOR="#0000FF" SIZE=2 FACE="Arial">http://pyglet.org/</FONT></SPAN></U><SPAN LANG="en-us"></SPAN></A><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">I would welcom</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">e</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial"> any suggestions/improvements etc as my class knowledge is still somewhat lacking</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"> <FONT FACE="Wingdings" SIZE=2>J</FONT></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial"></FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"> </SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">I</FONT><FONT SIZE=2 FACE="Arial"></FONT> <FONT SIZE=2 FACE="Arial">was thin</FONT><FONT SIZE=2 FACE="Arial">king about using</FONT> <FONT SIZE=2 FACE="Arial">*args to get maybe the colour</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"> <FONT SIZE=2 FACE="Arial">information in, not su</FONT><FONT SIZE=2 FACE="Arial">re if i could do it with the points, is this a good idea/possible?</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">And how can i go about testing that i get</FONT> <FONT SIZE=2 FACE="Arial">appropriate values</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial"> during the testing/building phase</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial"> (gene</FONT><FONT SIZE=2 FACE="Arial">ra</FONT><FONT SIZE=2 FACE="Arial">lly speaking)</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">, is</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"> <FONT SIZE=2 FACE="Arial">it lots of print</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">/return</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial"> statements and then remove them</FONT><FONT SIZE=2 FACE="Arial">?</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">T</FONT><FONT SIZE=2 FACE="Arial">hanks</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-gb"><FONT SIZE=2 FACE="Arial">paul</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-gb"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">#!/usr/bin/env python</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">from pyglet.gl import *</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">class Point:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; '''This init contains the x,y co-ordinates</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and the colour/transparency objects</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cr is red, cg is green, cb is blue and ct is transparency</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a value or 1.0, 1.0, 1.0, 1.0 is white/0% transp</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">a</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">rent'''</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; def __init__(self, x=0, y=0, cr=1.0, cg=1.0, cb=1.0, ct=1.0):</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.x = x</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.y = y</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.cr = cr</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.cg = cg</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.cb = cb</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.ct = ct</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.col =</FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">(</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">cr, cg, cb, ct</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri">)</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">class Square:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; '''First version, requires four points, an optional filled field</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and an optional line width field.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The next version will iterate over a loop to allow the</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; construction of polygons'''</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; def __init__(self, p1, p2, p3, p4, filled=True, line_width=1):</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.points = [p1,p2,p3,p4]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.filled = filled</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.line_width = line_width</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; def draw(self):</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; draw_square(self.points[0].x,</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">self.points[0].y, self.points[0].col, self.points[1].x,self.points[1].y, self.points[1].col, self.points[2].x,</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">self.points[2].y, self.points[2].col, self.points[3].x,</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">self.points[3].y, self.points[3].col,</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">self.filled,</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">self.line_width)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">def draw_square(x0, y0, col0, x1, y1, col1, x2, y2, col2, x3, y3, col3, filled=True, line_width=1):</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; if filled:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glBegin(GL_QUADS)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; else:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glLineWidth(line_width)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glBegin(GL_LINE_LOOP)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glColor4f(col0[0], col0[1], col0[2], col0[3])</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glVertex2i(int(x0), int(y0))</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glColor4f(col1[0], col1[1], col1[2], col1[3])</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glVertex2i(int(x1), int(y1))</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glColor4f(col2[0], col2[1], col2[2], col2[3])</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glVertex2i(int(x2), int(y2))</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glColor4f(col3[0], col3[1], col3[2], col3[3])</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glVertex2i(int(x3), int(y3))</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; glEnd()</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; if not filled and line_width != 1:&nbsp; # reset to default</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glLineWidth(1)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">if __name__ == '__main__':</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; from pyglet import window</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; window&nbsp; = window.Window(250, 250)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; s1 = Square(Point(50,50,cg=0.0,cb=0.0), Point(200,50,cr=0.0,cb=0.0), Point(200,200,cr=0.0,cg=0.0),</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">Point(50,200),</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT FACE="Calibri">filled=False, line_width=2)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; @window.event</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; def on_draw():</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.clear()</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s1.draw()</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">&nbsp;&nbsp;&nbsp; pyglet.app.run()</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

</BODY>
</HTML>