def mousePressEvent(self, event): position = self.mapToScene(QtCore.QPoint(event.x(), event.y())) x, y = self._convert_xy(position.x(), self.figure_iter.get_y(position.x())) if abs(y - position.y()) < 10: tangent = self.figure_iter.derivative(x) p1x, p1y = self._convert_xy(tangent[0][0], tangent[0][1]) p2x, p2y = self._convert_xy(tangent[1][0], tangent[1][1]) self.scene.addLine(p1x, p1y, p2x, p2y, QtGui.QPen(QtCore.Qt.blue)) self.scene.addEllipse(x, y, 5, 5, QtGui.QPen(QtCore.Qt.red), QtGui.QBrush(QtCore.Qt.SolidPattern)) x1, y1 = rotate(90, p1x, p1y, x, y) x2, y2 = rotate(90, p2x, p2y, x, y) self.scene.addLine(x1, y1, x2, y2, QtGui.QPen(QtCore.Qt.green)) self.setScene(self.scene)
def __rotate_hndlr(self): self.angle = float(self.rotate_angle_ledit.text() or '0') self.rpx = float(self.rotate_x_ledit.text() or '0') self.rpy = float(self.rotate_y_ledit.text() or '0') return lambda x, y: rotate(self.angle, x, y, self.rpx, self.rpy)