Planes
We will now add a plane class, this is another fundamental building block. It will also be used for various collision detections at a later stage.We have created two classes below:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
from point import createpoint
class createplanesimple:
def __init__(self, p1, plane_size=10):
size = plane_size / 2
self.p1 = createpoint((p1[0] + size, p1[1]+size, p1[2]))
self.p2 = createpoint((p1[0] - size, p1[1]+size, p1[2]))
self.p3 = createpoint((p1[0] + size, p1[1]-size, p1[2]))
self.p4 = createpoint((p1[0] - size, p1[1]-size, p1[2]))
self.normal = createpoint((0, 1, 0))
def draw(self):
glBegin(GL_TRIANGLE_STRIP)
glColor3f(0.9, 0.9, 0.9)
glNormal3f(self.normal.x, self.normal.y, self.normal.z)
glVertex3f(self.p1.x, self.p1.y, self.p1.z)
glVertex3f(self.p2.x, self.p2.y, self.p2.z)
glVertex3f(self.p3.x, self.p3.y, self.p3.z)
glVertex3f(self.p2.x, self.p2.y, self.p2.z)
glVertex3f(self.p3.x, self.p3.y, self.p3.z)
glVertex3f(self.p4.x, self.p4.y, self.p4.z)
glEnd()
self.p1.draw((0, 0, 1))
self.p2.draw((0, 0, 1))
self.p3.draw((0, 0, 1))
self.p4.draw((0, 0, 1))
class createplane:
def __init__(self, p1, p2, p3):
self.p1 = createpoint(p1)
self.p2 = createpoint(p2)
self.p3 = createpoint(p3)
self.normal = createpoint((0, 1, 0))
def draw(self):
glBegin(GL_TRIANGLE_STRIP)
glColor3f(0.8, 0.8, 0.8)
glNormal3f(self.normal.x, self.normal.y, self.normal.z)
glVertex3f(self.p1.x, self.p1.y, self.p1.z)
glVertex3f(self.p2.x, self.p2.y, self.p2.z)
glVertex3f(self.p3.x, self.p3.y, self.p3.z)
glEnd()
self.p1.draw((1, 0, 0))
self.p2.draw((0, 1, 0))
self.p3.draw((0, 0, 1))
|