Example #1
0
 def revalidate_bounding_box(self):
     Vector.revalidate_bounding_box(self)
     if self.length > 0:
         self.bounding_box.extend_with_point(
             numpy.array([-self.radius, -self.radius, 0]))
         self.bounding_box.extend_with_point(
             numpy.array([self.radius, self.radius, self.length]))
Example #2
0
 def define_target(self, reference, new_target):
     Vector.define_target(self, reference, new_target)
     self.handlers[new_target] = [
         new_target.connect("on_number_changed", self.atom_property_changed),
         new_target.connect("on_user_radius_changed", self.atom_property_changed),
         new_target.connect("on_user_color_changed", self.atom_property_changed),
     ]
Example #3
0
 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)
Example #4
0
 def define_target(self, reference, new_target):
     Vector.define_target(self, reference, new_target)
     self.handlers[new_target] = [
         new_target.connect("on_number_changed", self.atom_property_changed),
         new_target.connect("on_user_radius_changed", self.atom_property_changed),
         new_target.connect("on_user_color_changed", self.atom_property_changed),
     ]
Example #5
0
 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)
Example #6
0
 def revalidate_bounding_box(self):
     Vector.revalidate_bounding_box(self)
     if self.length > 0.0:
         self.bounding_box.extend_with_corners(
             numpy.array([[0.0, 0.0, 0.0], [0.0, 0.0, self.length]]))
         temp = {
             True: self.radius,
             False: self.arrow_radius
         }[self.radius > self.arrow_radius]
         self.bounding_box.extend_with_corners(
             numpy.array([[-temp, -temp, 0.0], [temp, temp, 0.0]]))
Example #7
0
 def revalidate_bounding_box(self):
     Vector.revalidate_bounding_box(self)
     if self.length > 0.0:
         self.bounding_box.extend_with_corners(numpy.array([
             [0.0, 0.0, 0.0],
             [0.0, 0.0, self.length]
         ]))
         temp = {True: self.radius, False: self.arrow_radius}[self.radius > self.arrow_radius]
         self.bounding_box.extend_with_corners(numpy.array([
             [-temp, -temp, 0.0],
             [ temp,  temp, 0.0]
         ]))
Example #8
0
    def draw(self):
        Vector.draw(self)
        if self.length <= 0: return
        half_length = 0.5 * (self.end_position - self.begin_position)
        if half_length <= 0: return
        half_radius = 0.5 * (self.begin_radius + self.end_radius)

        begin = self.children[0].target
        end = self.children[1].target

        vb = context.application.vis_backend
        vb.set_color(*begin.get_color())
        vb.translate(0.0, 0.0, self.begin_position)
        vb.draw_cone(self.begin_radius, half_radius, half_length, self.quality)
        vb.translate(0.0, 0.0, half_length)
        vb.set_color(*end.get_color())
        vb.draw_cone(half_radius, self.end_radius, half_length, self.quality)
Example #9
0
    def draw(self):
        Vector.draw(self)
        if self.length <= 0: return
        half_length = 0.5 * (self.end_position - self.begin_position)
        if half_length <= 0: return
        half_radius = 0.5 * (self.begin_radius + self.end_radius)

        begin = self.children[0].target
        end = self.children[1].target

        vb = context.application.vis_backend
        vb.set_color(*begin.get_color())
        vb.translate(0.0, 0.0, self.begin_position)
        vb.draw_cone(self.begin_radius, half_radius, half_length, self.quality)
        vb.translate(0.0, 0.0, half_length)
        vb.set_color(*end.get_color())
        vb.draw_cone(half_radius, self.end_radius, half_length, self.quality)
Example #10
0
 def calc_vector_dimensions(self):
     Vector.calc_vector_dimensions(self)
     begin = self.children[0].target
     end = self.children[1].target
     if self.length <= 0.0: return
     c = (begin.get_radius() - end.get_radius()) / self.length
     if abs(c) > 1:
         self.begin_radius = 0
         self.end_radius = 0
         self.begin_position = 0
         self.end_position = 0
     else:
         scale = 0.4
         s = math.sqrt(1 - c**2)
         self.begin_radius = scale * begin.get_radius() * s
         self.end_radius = scale * end.get_radius() * s
         self.begin_position = scale * c * begin.get_radius()
         self.end_position = self.length + scale * c * end.get_radius()
Example #11
0
 def calc_vector_dimensions(self):
     Vector.calc_vector_dimensions(self)
     begin = self.children[0].target
     end = self.children[1].target
     if self.length <= 0.0: return
     c = (begin.get_radius() - end.get_radius()) / self.length
     if abs(c) > 1:
         self.begin_radius = 0
         self.end_radius = 0
         self.begin_position = 0
         self.end_position = 0
     else:
         scale = 0.4
         s = numpy.sqrt(1 - c**2)
         self.begin_radius = scale * begin.get_radius() * s
         self.end_radius = scale * end.get_radius() * s
         self.begin_position = scale * c * begin.get_radius()
         self.end_position = self.length + scale * c * end.get_radius()
Example #12
0
 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()
Example #13
0
 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()
Example #14
0
 def initnonstate(self):
     Vector.initnonstate(self)
     self.handlers = {}
Example #15
0
 def revalidate_bounding_box(self):
     Vector.revalidate_bounding_box(self)
     if self.length > 0:
         temp = {True: self.begin_radius, False: self.end_radius}[self.begin_radius > self.end_radius]
         self.bounding_box.extend_with_point(numpy.array([-temp, -temp, self.begin_position]))
         self.bounding_box.extend_with_point(numpy.array([temp, temp, self.end_position]))
Example #16
0
 def undefine_target(self, reference, old_target):
     Vector.undefine_target(self, reference, old_target)
     for handler in self.handlers[old_target]:
         old_target.disconnect(handler)
Example #17
0
 def revalidate_bounding_box(self):
     Vector.revalidate_bounding_box(self)
     if self.length > 0:
         self.bounding_box.extend_with_point(numpy.array([-self.radius, -self.radius, 0]))
         self.bounding_box.extend_with_point(numpy.array([self.radius, self.radius, self.length]))
Example #18
0
 def undefine_target(self, reference, old_target):
     Vector.undefine_target(self, reference, old_target)
     for handler in self.handlers[old_target]:
         old_target.disconnect(handler)
Example #19
0
 def initnonstate(self):
     Vector.initnonstate(self)
     self.handlers = {}
Example #20
0
 def revalidate_bounding_box(self):
     Vector.revalidate_bounding_box(self)
     if self.length > 0:
         temp = {True: self.begin_radius, False: self.end_radius}[self.begin_radius > self.end_radius]
         self.bounding_box.extend_with_point(numpy.array([-temp, -temp, self.begin_position]))
         self.bounding_box.extend_with_point(numpy.array([temp, temp, self.end_position]))