def draw(self): Vector.draw(self) ColorMixin.draw(self) vb = context.application.vis_backend if self.length > self.rest_length: l_cyl = self.rest_length l_cone = 0.5 * (self.length - l_cyl) if l_cone > 0: vb.draw_cone(self.radius, 0.0, l_cone, self.quality) vb.translate(0.0, 0.0, l_cone) if l_cyl > 0: vb.draw_cone(0.5 * self.radius, 0.5 * self.radius, l_cyl, self.quality) vb.translate(0.0, 0.0, l_cyl) if l_cone > 0: vb.draw_cone(0.0, self.radius, l_cone, self.quality) else: l_cyl = self.length l_cone = 0.5 * (self.rest_length - self.length) if l_cone > 0: vb.translate(0.0, 0.0, -l_cone) vb.draw_cone(0.0, self.radius, l_cone, self.quality) vb.translate(0.0, 0.0, l_cone) if l_cyl > 0: vb.draw_cylinder(0.5 * self.radius, l_cyl, self.quality) vb.translate(0.0, 0.0, l_cyl) if l_cone > 0: vb.draw_cone(self.radius, 0.0, l_cone, self.quality)
def draw(self): Vector.draw(self) ColorMixin.draw(self) vb = context.application.vis_backend if self.length > self.rest_length: l_cyl = self.rest_length l_cone = 0.5*(self.length - l_cyl) if l_cone > 0: vb.draw_cone(self.radius, 0.0, l_cone, self.quality) vb.translate(0.0, 0.0, l_cone) if l_cyl > 0: vb.draw_cone(0.5*self.radius, 0.5*self.radius, l_cyl, self.quality) vb.translate(0.0, 0.0, l_cyl) if l_cone > 0: vb.draw_cone(0.0, self.radius, l_cone, self.quality) else: l_cyl = self.length l_cone = 0.5*(self.rest_length - self.length) if l_cone > 0: vb.translate(0.0, 0.0, -l_cone) vb.draw_cone(0.0, self.radius, l_cone, self.quality) vb.translate(0.0, 0.0, l_cone) if l_cyl > 0: vb.draw_cylinder(0.5*self.radius, l_cyl, self.quality) vb.translate(0.0, 0.0, l_cyl) if l_cone > 0: vb.draw_cone(self.radius, 0.0, l_cone, self.quality)
def draw_spike(self): ColorMixin.draw(self) vb = context.application.vis_backend vb.draw_quad_strip(( numpy.array([0.5773502692, -0.5773502692, -0.5773502692]), [numpy.array([self.spike_length, self.spike_length, self.spike_length])] ), ( numpy.array([1, 0, 0]), [numpy.array([self.spike_thickness, 0, 0])] ), ( numpy.array([-0.5773502692, 0.5773502692, -0.5773502692]), [numpy.array([self.spike_length, self.spike_length, self.spike_length])] ), ( numpy.array([0, 1, 0]), [numpy.array([0, self.spike_thickness, 0])] ), ( numpy.array([-0.5773502692, -0.5773502692, 0.5773502692]), [numpy.array([self.spike_length, self.spike_length, self.spike_length])] ), ( numpy.array([0, 0, 1]), [numpy.array([0, 0, self.spike_thickness])] ), ( numpy.array([0.5773502692, -0.5773502692, -0.5773502692]), [numpy.array([self.spike_length, self.spike_length, self.spike_length])] ), ( numpy.array([1, 0, 0]), [numpy.array([self.spike_thickness, 0, 0])] ))
def draw(self): GLReferentBase.draw(self) ColorMixin.draw(self) vb = context.application.vis_backend p0,p1,p2,p3 = [target.get_frame_relative_to(self.parent).t for target in self.get_targets()] def get_normal(a,b,c,d): result = numpy.cross(a-b,c-b) norm = numpy.linalg.norm(result) if norm < 1e-8: return numpy.zeros(3,float) else: result /= norm if numpy.dot(result,d-b) > 0: result *= -1 return result vb.draw_triangles(( get_normal(p0,p1,p2,p3), [p0,p1,p2], ), ( get_normal(p1,p2,p3,p0), [p1,p2,p3], ), ( get_normal(p2,p3,p0,p1), [p2,p3,p0], ), ( get_normal(p3,p0,p1,p2), [p3,p0,p1], ))
def draw(self): GLGeometricBase.draw(self) ColorMixin.draw(self) vb = context.application.vis_backend x, y, z = numpy.identity(3) sides = numpy.array([(x, y, z, z), (x, y, -z, -z), (y, z, x, x), (y, z, -x, -x), (z, x, y, y), (z, x, -y, -y)], float) sides[:, :3] *= 0.5 * self.size vb.draw_quads(*[(normal, [ a + b + c, a - b + c, -a - b + c, -a + b + c, ]) for a, b, c, normal in sides])
def draw(self): Vector.draw(self) ColorMixin.draw(self) vb = context.application.vis_backend if self.length == 0.0: return # usefull variable if self.arrow_radius <= 0: arrowtop_length = self.arrow_length else: arrowtop_length = self.arrow_length / self.arrow_radius * self.radius # stick and bottom if (self.length - arrowtop_length > 0) and (self.radius > 0): vb.draw_cylinder(self.radius, self.length - arrowtop_length, self.quality) vb.set_quadric_inside() vb.draw_disk(self.radius, self.quality) # arrowtop if (self.radius > 0): if (arrowtop_length > 0): vb.push_matrix() vb.translate(0.0, 0.0, self.length - arrowtop_length) vb.set_quadric_outside() vb.draw_cone(self.radius, 0, arrowtop_length, self.quality) vb.pop_matrix() else: vb.push_matrix() vb.translate(0.0, 0.0, self.length) vb.set_quadric_outside() vb.draw_disk(self.radius, self.quality) vb.pop_matrix() # arrow if (self.arrow_radius - self.radius > 0) and (self.arrow_length - arrowtop_length) > 0: vb.push_matrix() vb.translate(0.0, 0.0, (self.length - self.arrow_length) * (self.arrow_position)) vb.set_quadric_outside() vb.draw_cone(self.arrow_radius, self.radius, self.arrow_length - arrowtop_length, self.quality) vb.set_quadric_inside() vb.draw_disk(self.arrow_radius, self.quality) vb.pop_matrix() vb.set_quadric_outside()
def draw(self): GLGeometricBase.draw(self) ColorMixin.draw(self) vb = context.application.vis_backend x,y,z = numpy.identity(3) sides = numpy.array([(x,y,z,z), (x,y,-z,-z), (y,z,x,x), (y,z,-x,-x), (z,x,y,y), (z,x,-y,-y)], float) sides[:,:3] *= 0.5*self.size vb.draw_quads(*[ ( normal, [ a+b+c, a-b+c, -a-b+c, -a+b+c, ] ) for a,b,c,normal in sides ])
def draw(self): Vector.draw(self) ColorMixin.draw(self) vb = context.application.vis_backend if self.length == 0.0: return # usefull variable if self.arrow_radius <= 0: arrowtop_length = self.arrow_length else: arrowtop_length = self.arrow_length / self.arrow_radius * self.radius # stick and bottom if (self.length - arrowtop_length > 0) and (self.radius > 0): vb.draw_cylinder(self.radius, self.length - arrowtop_length, self.quality) vb.set_quadric_inside() vb.draw_disk(self.radius, self.quality) # arrowtop if self.radius > 0: if arrowtop_length > 0: vb.push_matrix() vb.translate(0.0, 0.0, self.length - arrowtop_length) vb.set_quadric_outside() vb.draw_cone(self.radius, 0, arrowtop_length, self.quality) vb.pop_matrix() else: vb.push_matrix() vb.translate(0.0, 0.0, self.length) vb.set_quadric_outside() vb.draw_disk(self.radius, self.quality) vb.pop_matrix() # arrow if (self.arrow_radius - self.radius > 0) and (self.arrow_length - arrowtop_length) > 0: vb.push_matrix() vb.translate(0.0, 0.0, (self.length - self.arrow_length) * (self.arrow_position)) vb.set_quadric_outside() vb.draw_cone(self.arrow_radius, self.radius, self.arrow_length - arrowtop_length, self.quality) vb.set_quadric_inside() vb.draw_disk(self.arrow_radius, self.quality) vb.pop_matrix() vb.set_quadric_outside()
def draw(self): GLReferentBase.draw(self) ColorMixin.draw(self) self.update_normal() vb = context.application.vis_backend vb.draw_quads(( self.normal, [ self.l_l + 0.001 * self.normal, self.l_h + 0.001 * self.normal, self.h_h + 0.001 * self.normal, self.h_l + 0.001 * self.normal, ], ), ( -self.normal, [ self.h_l - 0.001 * self.normal, self.h_h - 0.001 * self.normal, self.l_h - 0.001 * self.normal, self.l_l - 0.001 * self.normal, ], ))
def draw(self): GLReferentBase.draw(self) ColorMixin.draw(self) self.update_normal() vb = context.application.vis_backend vb.draw_quads(( self.normal, [ self.l_l + 0.001*self.normal, self.l_h + 0.001*self.normal, self.h_h + 0.001*self.normal, self.h_l + 0.001*self.normal, ], ), ( - self.normal, [ self.h_l - 0.001*self.normal, self.h_h - 0.001*self.normal, self.l_h - 0.001*self.normal, self.l_l - 0.001*self.normal, ], ))
def draw_spike(self): ColorMixin.draw(self) vb = context.application.vis_backend vb.draw_quad_strip( (numpy.array([0.5773502692, -0.5773502692, -0.5773502692]), [ numpy.array( [self.spike_length, self.spike_length, self.spike_length]) ]), (numpy.array([1, 0, 0 ]), [numpy.array([self.spike_thickness, 0, 0])]), (numpy.array([-0.5773502692, 0.5773502692, -0.5773502692]), [ numpy.array( [self.spike_length, self.spike_length, self.spike_length]) ]), (numpy.array([0, 1, 0 ]), [numpy.array([0, self.spike_thickness, 0])]), (numpy.array([-0.5773502692, -0.5773502692, 0.5773502692]), [ numpy.array( [self.spike_length, self.spike_length, self.spike_length]) ]), (numpy.array([0, 0, 1 ]), [numpy.array([0, 0, self.spike_thickness])]), (numpy.array([0.5773502692, -0.5773502692, -0.5773502692]), [ numpy.array( [self.spike_length, self.spike_length, self.spike_length]) ]), (numpy.array([1, 0, 0 ]), [numpy.array([self.spike_thickness, 0, 0])]))
def draw(self): GLGeometricBase.draw(self) ColorMixin.draw(self) vb = context.application.vis_backend vb.draw_sphere(self.radius, self.quality)