コード例 #1
0
ファイル: transform.py プロジェクト: molmod/zeobuilder
    def do(self):
        cache = context.application.cache

        # Translate where possible, if necessary
        translated_nodes = cache.translated_nodes
        if len(translated_nodes) > 0:
            if isinstance(cache.last, GLTransformationMixin) and \
               isinstance(cache.last.transformation, Translation):
                absolute_inversion_center = cache.last.get_absolute_frame().t
            else:
                absolute_inversion_center = numpy.zeros(3, float)
            victims_by_parent = list_by_parent(cache.transformed_nodes)
            for parent, victims in victims_by_parent.iteritems():
                local_inversion_center = parent.get_absolute_frame().inv * absolute_inversion_center
                for victim in victims:
                    translation = Translation(2 * (local_inversion_center - victim.transformation.t))
                    primitive.Transform(victim, translation)

        # Apply an inversion rotation where possible
        inversion = Rotation(-numpy.identity(3, float))
        for victim in cache.rotated_nodes:
            primitive.Transform(victim, inversion, after=False)
コード例 #2
0
    def do(self):
        cache = context.application.cache

        # Translate where possible, if necessary
        translated_nodes = cache.translated_nodes
        if len(translated_nodes) > 0:
            if isinstance(cache.last, GLTransformationMixin) and \
               isinstance(cache.last.transformation, Translation):
                absolute_inversion_center = cache.last.get_absolute_frame().t
            else:
                absolute_inversion_center = numpy.zeros(3, float)
            victims_by_parent = list_by_parent(cache.transformed_nodes)
            for parent, victims in victims_by_parent.iteritems():
                local_inversion_center = parent.get_absolute_frame(
                ).inv * absolute_inversion_center
                for victim in victims:
                    translation = Translation(
                        2 * (local_inversion_center - victim.transformation.t))
                    primitive.Transform(victim, translation)

        # Apply an inversion rotation where possible
        inversion = Rotation(-numpy.identity(3, float))
        for victim in cache.rotated_nodes:
            primitive.Transform(victim, inversion, after=False)
コード例 #3
0
 def get_nodes_by_parent(self):
     return analysis.list_by_parent(self.nodes)
コード例 #4
0
 def get_nodes_by_parent(self):
     return analysis.list_by_parent(self.nodes)