def scale(self, obj, srcpos, dstpos): cent = QgsGeometry().fromPointXY(QgsPointXY(0, 0)) srclen = cent.distance(srcpos) dstlen = cent.distance(dstpos) ratio = (dstlen / srclen) * 1.5 # 「1.5」は適当 obj.transform(QTransform(ratio, 0, 0, ratio, 0, 0)) return obj
def rotate(self, obj, srcpos, dstpos): centroid = self.nearobj.centroid().asPoint() theta = self.radian(centroid, dstpos) sin = math.sin(theta) cos = math.cos(theta) obj.transform(QTransform(cos, sin, -sin, cos, 0, 0)) return obj
def trans(self, obj, srcpos, dstpos): x = dstpos.x() - srcpos.x() y = dstpos.y() - srcpos.y() obj.transform(QTransform(1, 0, 0, 1, x, y)) return obj