def update(self, dt): z = 0 if self.action['zoom_out']: z -= 1 if self.action['zoom_in']: z += 1 if z != 0: self.camera.zoom_relative(z/10.0, self.get_key_sensitivity()/10.0) dx, dy, dz = 0, 0, 0 if self.action['left']: dx -= 1 if self.action['right']: dx += 1 if self.action['up']: dy -= 1 if self.action['down']: dy += 1 if self.action['spin_left']: dz += 1 if self.action['spin_right']: dz -= 1 if not self.is_2D(): if dx != 0: self.camera.euler_rotate(dx*dt*self.get_key_sensitivity(), *(get_direction_vectors()[1])) if dy != 0: self.camera.euler_rotate(dy*dt*self.get_key_sensitivity(), *(get_direction_vectors()[0])) if dz != 0: self.camera.euler_rotate(dz*dt*self.get_key_sensitivity(), *(get_direction_vectors()[2])) else: self.camera.mouse_translate(0, 0, dx*dt*self.get_key_sensitivity(), -dy*dt*self.get_key_sensitivity()) rz = 0 if self.action['rotate_z_neg'] and not self.is_2D(): rz -= 1 if self.action['rotate_z_pos'] and not self.is_2D(): rz += 1 if rz != 0: self.camera.euler_rotate(rz*dt*self.get_key_sensitivity(), *(get_basis_vectors()[2])) if self.action['reset_camera']: self.camera.reset() if self.action['rot_preset_xy']: self.camera.set_rot_preset('xy') if self.action['rot_preset_xz']: self.camera.set_rot_preset('xz') if self.action['rot_preset_yz']: self.camera.set_rot_preset('yz') if self.action['rot_preset_perspective']: self.camera.set_rot_preset('perspective') if self.action['toggle_axes']: self.action['toggle_axes'] = False self.camera.axes.toggle_visible() if self.action['toggle_axe_colors']: self.action['toggle_axe_colors'] = False self.camera.axes.toggle_colors() if self.action['save_image']: self.action['save_image'] = False self.window.plot.saveimage() return True
def draw_axis(self, axis, color): ticks = self._p._axis_ticks[axis] radius = self._p._tick_length / 2.0 if len(ticks) < 2: return # calculate the vector for this axis axis_lines = [[0, 0, 0], [0, 0, 0]] axis_lines[0][axis], axis_lines[1][axis] = ticks[0], ticks[-1] axis_vector = vec_sub(axis_lines[1], axis_lines[0]) # calculate angle to the z direction vector pos_z = get_direction_vectors()[2] d = abs(dot_product(axis_vector, pos_z)) d = d / vec_mag(axis_vector) # don't draw labels if we're looking down the axis labels_visible = abs(d - 1.0) > 0.02 # draw the ticks and labels for tick in ticks: self.draw_tick_line(axis, color, radius, tick, labels_visible) # draw the axis line and labels self.draw_axis_line(axis, color, ticks[0], ticks[-1], labels_visible)
def update(self, dt): z = 0 if self.action['zoom_out']: z -= 1 if self.action['zoom_in']: z += 1 if z != 0: self.camera.zoom_relative(z / 10.0, self.get_key_sensitivity() / 10.0) dx, dy, dz = 0, 0, 0 if self.action['left']: dx -= 1 if self.action['right']: dx += 1 if self.action['up']: dy -= 1 if self.action['down']: dy += 1 if self.action['spin_left']: dz += 1 if self.action['spin_right']: dz -= 1 if not self.is_2D(): if dx != 0: self.camera.euler_rotate(dx * dt * self.get_key_sensitivity(), *(get_direction_vectors()[1])) if dy != 0: self.camera.euler_rotate(dy * dt * self.get_key_sensitivity(), *(get_direction_vectors()[0])) if dz != 0: self.camera.euler_rotate(dz * dt * self.get_key_sensitivity(), *(get_direction_vectors()[2])) else: self.camera.mouse_translate(0, 0, dx * dt * self.get_key_sensitivity(), -dy * dt * self.get_key_sensitivity()) rz = 0 if self.action['rotate_z_neg'] and not self.is_2D(): rz -= 1 if self.action['rotate_z_pos'] and not self.is_2D(): rz += 1 if rz != 0: self.camera.euler_rotate(rz * dt * self.get_key_sensitivity(), *(get_basis_vectors()[2])) if self.action['reset_camera']: self.camera.reset() if self.action['rot_preset_xy']: self.camera.set_rot_preset('xy') if self.action['rot_preset_xz']: self.camera.set_rot_preset('xz') if self.action['rot_preset_yz']: self.camera.set_rot_preset('yz') if self.action['rot_preset_perspective']: self.camera.set_rot_preset('perspective') if self.action['toggle_axes']: self.action['toggle_axes'] = False self.camera.axes.toggle_visible() if self.action['toggle_axe_colors']: self.action['toggle_axe_colors'] = False self.camera.axes.toggle_colors() if self.action['save_image']: self.action['save_image'] = False self.window.plot.saveimage() return True
def update(self, a): z = rz = dx = dy = dz = 0.0 if a == 'rot_preset_xy': self.c.setup_preset('xy') elif a == 'rot_preset_xz': self.c.setup_preset('xz') elif a == 'rot_preset_yz': self.c.setup_preset('yz') elif a == 'rot_preset_perspective': self.c.setup_preset('perspective') elif a == 'reset_camera': self.c.reset() elif a == 'toggle_fullscreen': fs = self.f.fullscreen self.f.set_fullscreen(not fs) self.f.activate() elif a == 'toggle_axes': self.a.toggle_axes() elif a == 'toggle_points': self.f.toggle_viz(['points'], 'point') elif a == 'toggle_cobjects': self.f.toggle_viz(['curves', 'surfaces'], 'cobj') elif a == 'toggle_curves': self.f.toggle_viz(['curves'], 'nurbs') elif a == 'toggle_surfaces': self.f.toggle_viz(['surfaces'], 'nurbs') elif a == 'toggle_volumes': self.f.toggle_viz(['volumes'], 'nurbs') elif a == 'end_selection1': self.m.mode.end_selection1() elif a == 'end_selection2': self.m.mode.end_selection2() elif a == 'undo': self.m.undo() elif a == 'toggle_translate_nurbs': self.m.toggle_mode('TranslateNURBSMode') elif a == 'toggle_compose_curve': self.m.toggle_mode('ComposeCurveMode') elif a == 'toggle_compose_surface': self.m.toggle_mode('ComposeSurfaceMode') elif a == 'toggle_split_curve': self.m.toggle_mode('SplitCurveMode') elif a == 'toggle_split_surface': self.m.toggle_mode('SplitSurfaceMode') elif a == 'toggle_split_surface2': self.m.toggle_mode('SplitSurface2Mode') elif a == 'toggle_interpolate_curve': self.m.toggle_mode('InterpolateCurveMode') elif a == 'toggle_make_cubic_bezier': self.m.toggle_mode('MakeCubicBezierMode') elif a == 'toggle_make_bilinear_coons_surface': self.m.toggle_mode('MakeBilinearCoonsSurfaceMode') elif a == 'zoom_out': z -= 1 elif a == 'zoom_in': z += 1 elif a == 'left': dx -= 1 elif a == 'right': dx += 1 elif a == 'up': dy -= 1 elif a == 'down': dy += 1 elif a == 'spin_left': dz += 1 elif a == 'spin_right': dz -= 1 elif a == 'rotate_z_neg': rz -= 1 elif a == 'rotate_z_pos': rz += 1 if z != 0: self.c.zoom_relative(z) elif dx != 0: xyz = util.get_direction_vectors()[1] self.c.euler_rotate(dx * self.key_sensi, *xyz) elif dy != 0: xyz = util.get_direction_vectors()[0] self.c.euler_rotate(dy * self.key_sensi, *xyz) elif dz != 0: xyz = util.get_direction_vectors()[2] self.c.euler_rotate(dz * self.key_sensi, *xyz) elif rz != 0: self.c.euler_rotate(rz * self.key_sensi, *(0, 0, 1))