【问题标题】:How to calculate transformation using coordinates of rectangle?如何使用矩形坐标计算变换?
【发布时间】:2015-04-16 10:05:57
【问题描述】:

你好朋友我正在做一个项目,我有一个问题。 请参阅下面的图片

这个紫色矩形是我想要旋转和变换的主要区域。我已经使用 Qtransform 将其旋转了 30 度并且大小为(180,173)。我已经计算了内部区域的线并将它们传递给绘画事件,当我调整外部矩形的大小时,这个内部矩形是使用painterpath绘制的,见下图 现在,img 2 中的这个紫色区域看起来像变形了,因为当我减小外部矩形的大小时,我只画了绳子。

所以我的问题是,有没有什么方法可以计算内部区域在什么角度被转换如果是,请帮助我。

【问题讨论】:

    标签: c++ qt rotation geometry transformation


    【解决方案1】:

    我假设您能够获得目标图形的坐标(应用变换后)。您可以使用atan2 函数获取向量与 X 轴之间的角度(以辐射为单位):

    QPointF vector = vector_end - vector_start;
    double angle = atan2(vector.y(), vector.x());
    

    两个向量的angle 值的差异将为您提供这两个向量之间的角度。您可能需要通过添加或减去 2π 来确保差异在 [0, 2π] 范围内。

    【讨论】:

    • 感谢 Pavel 的回复,我有一个问题,我有什么办法可以根据我要绘制的点来定义自己的变换矩阵以创建新形状,旋转后我可以很容易地得到变换矩阵我可以获得 Qtransform 的 m11,m12... 值,但在那之后我计算了内部矩形旋转后的点,现在当我调整外部矩形的大小时,内部矩形是使用绘制事件绘制的。如果我减小外部矩形的大小,紫色(内部)矩形的顶部和底部保持不变,只有左右会根据百分比发生变化。那么有什么方法可以得到矩阵吗?
    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多