【问题标题】:Calculate transformation which is needed to transform a rectangle into its perspective form计算将矩形转换为其透视形式所需的转换
【发布时间】:2017-06-26 11:59:48
【问题描述】:

我有相同的矩形,未转换形式和透视形式。 未变换形式的坐标和透视形式的坐标都在未变换的坐标系中。

有没有办法重建导致这种变换的变换矩阵?

我认为应该可以通过求解 4 个角给出的 4 个方程来做到这一点,但我不确定从哪里开始。

// 编辑: 看起来我是这里 xy 问题的受害者。所有答案均基于 3d 环境。但是我在图像上有一个矩形+我知道这个矩形的真实尺寸。我需要知道的是如何将其他已知点转换为透视图

【问题讨论】:

    标签: math transformation coordinate-transformation


    【解决方案1】:

    请注意,您有 8 对对应参数(每个点的 x 和 y),并且需要使用 8 个方程计算矩阵的 8 个参数

    //four pairs of such equaions:
    x' = (A * x + B * y + C) / (G * x + H * y + 1.0)
    y' = (D * x + E * y + F) / (G * x + H * y + 1.0)
    

    在 Paul Heckbert article 中描述了寻找透视变换矩阵的理论。

    C++ 实现可以在antigrain library(文件agg_trans_perspective.h)中找到

    【讨论】:

    • 这似乎是我正在寻找的解决方案。它也适用于我编辑的问题,对吗?我会试试看。谢谢!
    • 是的,当你有两个平面时,它可以工作,第一个平面的四边形坐标和第二个平面的四边形坐标。
    • 哇——我实现了这个解决方案,它真的有效!非常感谢!
    【解决方案2】:

    一种方法是插入转换矩阵中给定的值。这样做的好处是简单易行,但对你理解没有帮助。

    要理解转换,请绘制一个屏幕垂直且自上而下的图表。画出眼睛。从眼睛到屏幕的线应该是垂直的。然后在屏幕外某处画一个点。然后从眼睛到点画一条线,穿过屏幕。

    然后是高中级别三角学的练习,以计算点在屏幕上的投影。

    【讨论】:

    • 我知道投影是什么以及它是如何想象的。但这不是我的问题。我需要知道如何计算矩阵
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多