factor out view-setting code
This commit is contained in:
parent
8998af5573
commit
6d0b2ca739
2 changed files with 102 additions and 76 deletions
|
|
@ -1212,4 +1212,101 @@ class GlCanonDraw:
|
||||||
glEnd()
|
glEnd()
|
||||||
glDepthFunc(GL_LESS)
|
glDepthFunc(GL_LESS)
|
||||||
|
|
||||||
|
def set_view_x(self):
|
||||||
|
if self.g:
|
||||||
|
mid = [(a+b)/2
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
glTranslatef(-mid[0], -mid[1], -mid[2])
|
||||||
|
size = [(a-b)
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
self.set_eyepoint_from_extents(size[1], size[2])
|
||||||
|
else:
|
||||||
|
self.set_eyepoint(5.)
|
||||||
|
self.perspective = False
|
||||||
|
self.lat = -90
|
||||||
|
self.lon = 270
|
||||||
|
self._redraw()
|
||||||
|
|
||||||
|
def set_view_y(self):
|
||||||
|
self.reset()
|
||||||
|
glRotatef(-90, 1, 0, 0)
|
||||||
|
if self.is_lathe():
|
||||||
|
glRotatef(90, 0, 1, 0)
|
||||||
|
if self.g:
|
||||||
|
mid = [(a+b)/2
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
glTranslatef(-mid[0], -mid[1], -mid[2])
|
||||||
|
size = [(a-b)
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
self.set_eyepoint_from_extents(size[0], size[2])
|
||||||
|
else:
|
||||||
|
self.set_eyepoint(5.)
|
||||||
|
self.perspective = False
|
||||||
|
self.lat = -90
|
||||||
|
self.lon = 0
|
||||||
|
self._redraw()
|
||||||
|
|
||||||
|
def set_view_z(self):
|
||||||
|
self.reset()
|
||||||
|
if self.g:
|
||||||
|
mid = [(a+b)/2
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
glTranslatef(-mid[0], -mid[1], -mid[2])
|
||||||
|
size = [(a-b)
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
self.set_eyepoint_from_extents(size[0], size[1])
|
||||||
|
else:
|
||||||
|
self.set_eyepoint(5.)
|
||||||
|
self.perspective = False
|
||||||
|
self.lat = self.lon = 0
|
||||||
|
self._redraw()
|
||||||
|
|
||||||
|
def set_view_z2(self):
|
||||||
|
self.reset()
|
||||||
|
glRotatef(-90, 0, 0, 1)
|
||||||
|
if self.g:
|
||||||
|
mid = [(a+b)/2
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
glTranslatef(-mid[0], -mid[1], -mid[2])
|
||||||
|
size = [(a-b) for a, b
|
||||||
|
in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
self.set_eyepoint_from_extents(size[1], size[0])
|
||||||
|
else:
|
||||||
|
self.set_eyepoint(5.)
|
||||||
|
self.perspective = False
|
||||||
|
self.lat = 0
|
||||||
|
self.lon = 270
|
||||||
|
self._redraw()
|
||||||
|
|
||||||
|
def set_view_p(self):
|
||||||
|
self.reset()
|
||||||
|
self.perspective = True
|
||||||
|
if self.g:
|
||||||
|
mid = [(a+b)/2
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
glTranslatef(-mid[0], -mid[1], -mid[2])
|
||||||
|
|
||||||
|
size = [(a-b)
|
||||||
|
for a, b in zip(self.g.max_extents, self.g.min_extents)]
|
||||||
|
size = (size[0] **2 + size[1] ** 2 + size[2] ** 2) ** .5
|
||||||
|
if size > 1e99: size = 5. # in case there are no moves in the preview
|
||||||
|
w = self.winfo_width()
|
||||||
|
h = self.winfo_height()
|
||||||
|
fovx = self.fovy * w / h
|
||||||
|
fov = min(fovx, self.fovy)
|
||||||
|
self.set_eyepoint((size * 1.1 + 1.0) / 2 / sin ( fov * pi / 180 / 2))
|
||||||
|
self.lat = -60
|
||||||
|
self.lon = 335
|
||||||
|
x = (self.g.min_extents[0] + self.g.max_extents[0])/2
|
||||||
|
y = (self.g.min_extents[1] + self.g.max_extents[1])/2
|
||||||
|
z = (self.g.min_extents[2] + self.g.max_extents[2])/2
|
||||||
|
glnav.glRotateScene(self, 1.0, x, y, z, 0, 0, 0, 0)
|
||||||
|
else:
|
||||||
|
self.set_eyepoint(5.)
|
||||||
|
self.lat = -60
|
||||||
|
self.lon = 335
|
||||||
|
glnav.glRotateScene(self, 1.0, self.xcenter, self.ycenter, self.zcenter, 0, 0, 0, 0)
|
||||||
|
self._redraw()
|
||||||
|
|
||||||
|
|
||||||
# vim:ts=8:sts=4:et:
|
# vim:ts=8:sts=4:et:
|
||||||
|
|
|
||||||
|
|
@ -1723,17 +1723,7 @@ class TclCommands(nf.TclCommands):
|
||||||
o.reset()
|
o.reset()
|
||||||
glRotatef(-90, 0, 1, 0)
|
glRotatef(-90, 0, 1, 0)
|
||||||
glRotatef(-90, 1, 0, 0)
|
glRotatef(-90, 1, 0, 0)
|
||||||
if o.g:
|
o.set_view_x()
|
||||||
mid = [(a+b)/2 for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
glTranslatef(-mid[0], -mid[1], -mid[2])
|
|
||||||
size = [(a-b) for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
o.set_eyepoint_from_extents(size[1], size[2])
|
|
||||||
else:
|
|
||||||
o.set_eyepoint(5.)
|
|
||||||
o.perspective = False
|
|
||||||
o.lat = -90
|
|
||||||
o.lon = 270
|
|
||||||
o.tkRedraw()
|
|
||||||
|
|
||||||
def set_view_y(event=None):
|
def set_view_y(event=None):
|
||||||
widgets.view_z.configure(relief="link")
|
widgets.view_z.configure(relief="link")
|
||||||
|
|
@ -1742,21 +1732,7 @@ class TclCommands(nf.TclCommands):
|
||||||
widgets.view_y.configure(relief="sunken")
|
widgets.view_y.configure(relief="sunken")
|
||||||
widgets.view_p.configure(relief="link")
|
widgets.view_p.configure(relief="link")
|
||||||
vars.view_type.set(4)
|
vars.view_type.set(4)
|
||||||
o.reset()
|
o.set_view_y()
|
||||||
glRotatef(-90, 1, 0, 0)
|
|
||||||
if lathe:
|
|
||||||
glRotatef(90, 0, 1, 0)
|
|
||||||
if o.g:
|
|
||||||
mid = [(a+b)/2 for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
glTranslatef(-mid[0], -mid[1], -mid[2])
|
|
||||||
size = [(a-b) for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
o.set_eyepoint_from_extents(size[0], size[2])
|
|
||||||
else:
|
|
||||||
o.set_eyepoint(5.)
|
|
||||||
o.perspective = False
|
|
||||||
o.lat = -90
|
|
||||||
o.lon = 0
|
|
||||||
o.tkRedraw()
|
|
||||||
|
|
||||||
def set_view_z(event=None):
|
def set_view_z(event=None):
|
||||||
widgets.view_z.configure(relief="sunken")
|
widgets.view_z.configure(relief="sunken")
|
||||||
|
|
@ -1765,17 +1741,7 @@ class TclCommands(nf.TclCommands):
|
||||||
widgets.view_y.configure(relief="link")
|
widgets.view_y.configure(relief="link")
|
||||||
widgets.view_p.configure(relief="link")
|
widgets.view_p.configure(relief="link")
|
||||||
vars.view_type.set(1)
|
vars.view_type.set(1)
|
||||||
o.reset()
|
o.set_view_z()
|
||||||
if o.g:
|
|
||||||
mid = [(a+b)/2 for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
glTranslatef(-mid[0], -mid[1], -mid[2])
|
|
||||||
size = [(a-b) for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
o.set_eyepoint_from_extents(size[0], size[1])
|
|
||||||
else:
|
|
||||||
o.set_eyepoint(5.)
|
|
||||||
o.perspective = False
|
|
||||||
o.lat = o.lon = 0
|
|
||||||
o.tkRedraw()
|
|
||||||
|
|
||||||
def set_view_z2(event=None):
|
def set_view_z2(event=None):
|
||||||
widgets.view_z.configure(relief="link")
|
widgets.view_z.configure(relief="link")
|
||||||
|
|
@ -1784,19 +1750,7 @@ class TclCommands(nf.TclCommands):
|
||||||
widgets.view_y.configure(relief="link")
|
widgets.view_y.configure(relief="link")
|
||||||
widgets.view_p.configure(relief="link")
|
widgets.view_p.configure(relief="link")
|
||||||
vars.view_type.set(2)
|
vars.view_type.set(2)
|
||||||
o.reset()
|
o.set_view_z2()
|
||||||
glRotatef(-90, 0, 0, 1)
|
|
||||||
if o.g:
|
|
||||||
mid = [(a+b)/2 for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
glTranslatef(-mid[0], -mid[1], -mid[2])
|
|
||||||
size = [(a-b) for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
o.set_eyepoint_from_extents(size[1], size[0])
|
|
||||||
else:
|
|
||||||
o.set_eyepoint(5.)
|
|
||||||
o.perspective = False
|
|
||||||
o.lat = 0
|
|
||||||
o.lon = 270
|
|
||||||
o.tkRedraw()
|
|
||||||
|
|
||||||
|
|
||||||
def set_view_p(event=None):
|
def set_view_p(event=None):
|
||||||
|
|
@ -1806,32 +1760,7 @@ class TclCommands(nf.TclCommands):
|
||||||
widgets.view_y.configure(relief="link")
|
widgets.view_y.configure(relief="link")
|
||||||
widgets.view_p.configure(relief="sunken")
|
widgets.view_p.configure(relief="sunken")
|
||||||
vars.view_type.set(5)
|
vars.view_type.set(5)
|
||||||
o.reset()
|
o.set_view_p()
|
||||||
o.perspective = True
|
|
||||||
if o.g:
|
|
||||||
mid = [(a+b)/2 for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
glTranslatef(-mid[0], -mid[1], -mid[2])
|
|
||||||
|
|
||||||
size = [(a-b) for a, b in zip(o.g.max_extents, o.g.min_extents)]
|
|
||||||
size = sqrt(size[0] **2 + size[1] ** 2 + size[2] ** 2)
|
|
||||||
if size > 1e99: size = 5. # in case there are no moves in the preview
|
|
||||||
w = o.winfo_width()
|
|
||||||
h = o.winfo_height()
|
|
||||||
fovx = o.fovy * w / h
|
|
||||||
fov = min(fovx, o.fovy)
|
|
||||||
o.set_eyepoint((size * 1.1 + 1.0) / 2 / sin ( fov * pi / 180 / 2))
|
|
||||||
o.lat = -60
|
|
||||||
o.lon = 335
|
|
||||||
x = (o.g.min_extents[0] + o.g.max_extents[0])/2
|
|
||||||
y = (o.g.min_extents[1] + o.g.max_extents[1])/2
|
|
||||||
z = (o.g.min_extents[2] + o.g.max_extents[2])/2
|
|
||||||
glRotateScene(o, 1.0, x, y, z, 0, 0, 0, 0)
|
|
||||||
else:
|
|
||||||
o.set_eyepoint(5.)
|
|
||||||
o.lat = -60
|
|
||||||
o.lon = 335
|
|
||||||
glRotateScene(o, 1.0, o.xcenter, o.ycenter, o.zcenter, 0, 0, 0, 0)
|
|
||||||
o.tkRedraw()
|
|
||||||
|
|
||||||
def estop_clicked(event=None):
|
def estop_clicked(event=None):
|
||||||
s.poll()
|
s.poll()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue