2D绘图之坐标系统--错切shear()

目录

1 void QPainter::shear(qreal sh, qreal sv)

2 测试代码

3 原理分析

4 执行结果


 

1 void QPainter::shear(qreal sh, qreal sv)

参数的含义如下:

  • sh:水平错切因子。
  • sv:垂直错切因子。
2 测试代码
void MainWindow::paintEvent(QPaintEvent *)
{


    QPainter painter(this);
    painter.setBrush(Qt::yellow);
    painter.drawRect(0, 0, 50, 50);

    //纵向扭曲变换
    painter.save();
    painter.shear(0, 0.5);
    painter.setPen(Qt::blue);
    painter.drawLine(QPointF(0,0),QPointF(50,50));
    painter.restore();

    painter.save();
    painter.shear(0.5, 0);
    painter.setPen(Qt::red);

    painter.drawLine(QPointF(0,0),QPointF(50,50));
    painter.restore();

    painter.save();
    painter.shear(0.5, 0.5);
    painter.setPen(Qt::black);

    painter.drawLine(QPointF(0,0),QPointF(50,50));
    painter.restore();

}
3 原理分析

        错切是在某方向上,按照一定的比例对图形的每个点到某条平行于该方向的直线的有向距离做放缩得到的平面图形。

         在平面R2 =Rx R上,水平错切(或平行于X轴的错切)是一个将任一点(x,y)映射到点(x+my,y)的操作,m是固定参数,称为错切因子。

        原来竖直的线则变成斜率为1\m的斜线.

        垂直错切同样的原理

        所以上面的最终点的位置应是(50,50+0.5*50) (50+0.5*50,50) (75,75)

4 执行结果

2D绘图之坐标系统--错切shear()_第1张图片

你可能感兴趣的:(QT,2D,qt,2D)