multiplot.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:kite 作者: pyrocko 项目源码 文件源码
def paint(self, painter, option, parent):
        r = self.vb.viewRect()
        h = r.height()
        w = r.width()

        nvectors = config.nvectors

        nx = int(num.sqrt(nvectors) * float(w)/h)
        ny = int(num.sqrt(nvectors) * float(h)/w)
        dx = float(w) / nx
        dy = float(h) / ny
        d = dx if dx < dy else dy

        mat_N = self.sandbox.model.north.T
        mat_E = self.sandbox.model.east.T
        img_shape = self.image.image.shape
        ivec = 0

        length_scale = self.sandbox.model.max_horizontal_displacement
        self.length_scale = length_scale if length_scale > 0. else 1.
        self.scale_view = (w+h)/2 / painter.window().height()*2.5

        for ix in xrange(nx):
            for iy in xrange(ny):
                if ivec > nvectors:
                    break
                vec = self.vectors[ivec]
                pos = QtCore.QPointF(r.x() + ix * dx + dx/2,
                                     r.y() + iy * dy + dy/2)

                # Slowest operation
                img_pos = self.plot.image.mapFromScene(
                    self.vb.mapViewToScene(pos))

                pE = int(img_pos.x())
                pN = int(img_pos.y())

                if (pE >= img_shape[0] or pN >= img_shape[1]) or\
                   (pE < 0 or pN < 0):
                    dE = 0.
                    dN = 0.
                else:
                    dE = mat_E[pE, pN]
                    dN = mat_N[pE, pN]
                    dE = dE / self.length_scale * (d/self.scale_view)
                    dN = dN / self.length_scale * (d/self.scale_view)
                vec.setPos(pos)
                vec.setOrientation(dE, dN)

                if vec.scale() != self.scale_view:
                    vec.setScale(self.scale_view)
                vec.setVisible(True)

                ivec += 1

        while ivec < nvectors:
            self.vectors[ivec].hide()
            ivec += 1

        QtGui.QGraphicsItemGroup.paint(self, painter, option, parent)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号