コード例 #1
0
ファイル: geometric.py プロジェクト: pyzh/pyglet
def render_tree(n=10, r=False):
    glLineWidth(2.)
    glColor4f(.5, .5, .5, .5)
    glBegin(GL_LINES)
    _tree_branch(n - 1, euclid.Line3(euclid.Point3(0., 0., 0.),
                                     euclid.Vector3(0., 1., 0.), 1.), r)
    glEnd()
コード例 #2
0
def _tree_branch(n, l, r):
    glVertex3f(l.p1.x, l.p1.y, l.p1.z)
    glVertex3f(l.p2.x, l.p2.y, l.p2.z)
    if n == 0:
        return

    if r:
        if random.random() > .9: return
        mag = abs(l.v) * (.5 + .5 * random.random())
    else:
        mag = abs(l.v) * .75
    if n % 2:
        v1 = _ROT_30_X * l.v
        v2 = _ROT_N30_X * l.v
    else:
        v1 = _ROT_30_Z * l.v
        v2 = _ROT_N30_Z * l.v
    _tree_branch(n - 1, euclid.Line3(l.p2, v1, mag), r)
    _tree_branch(n - 1, euclid.Line3(l.p2, v2, mag), r)