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

发布时间:2024年01月10日

目录

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 执行结果

文章来源:https://blog.csdn.net/weixin_44270564/article/details/135501953
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。