【问题标题】:translate coordinate from one triangle to a triangle with a different perspective将坐标从一个三角形转换为具有不同视角的三角形
【发布时间】:2012-08-10 05:14:53
【问题描述】:

如何计算三角形 2 的 D 点?

三角形 1 的坐标如下: a(0,0) b(0,78) c(18,39)

点 D 位于三角形 1 中的 (0,39)。

现在我通过移动坐标 b 和 c 来改变三角形的视角。 形成的新三角形称为三角形 2,坐标为: a(0,0) b(11,72) c(37,42)

您可以看到点 D 不在 a 线的中间b 因为透视/倾斜的变化。

我如何计算点 d?我有三角形 1 和 2 的坐标 abc。

最好在程序代码中回答而不是使用数学符号,因为我不是阅读数学的英雄:)

【问题讨论】:

  • 欢迎来到stackoverflow。纯粹的代码编写请求在 Stack Overflow 上是题外话——但我们很乐意帮助您自己编写!告诉我们what you've tried
  • 公平地说,@robmayoff 我认为这不是“JST GIV ME T3H CODEZ PLZ!!!!!!11!!”请求比“理解数学符号对我来说可能很困难,所以请以我能理解的方式表达你的答案。”请求。
  • @Zéychin 我同意,但我认为 stackoverflow 的一般理念是提问者应该尝试 something 并发布他尝试过的内容,而不是不尝试就直接提问。此外,如果同胞世界公民想要进行这种编程,他将不得不练习阅读数学。
  • @robmayoff 感谢您的回答让我更进一步。相信我,我一直在努力!

标签: objective-c xcode math


【解决方案1】:

您需要使用原始三角坐标将点 D 转换为重心坐标,然后使用修改后的三角坐标将其转换回笛卡尔坐标。

这看起来像是对三角重心坐标的一个很好的介绍:http://blogs.msdn.com/b/rezanour/archive/2011/08/07/barycentric-coordinates-and-point-in-triangle-tests.aspx

此外,将三角形中的点转换为重心坐标的显式公式在 Wikipedia 文章 “Barycentric coordinate system” 的转换为重心坐标部分的末尾给出。

【讨论】:

  • 我想我需要先找到相机视图坐标 (x,y,z) 才能计算点 D。如何根据坐标 a,b 确定相机的视点和c?
【解决方案2】:

我想还有更多方法可以计算从一个角度到另一个角度的坐标。

关于三角形方式的更多信息由 culebrón 写在这里:Transforming captured co-ordinates into screen co-ordinates

在同一个链接中,还有另一种方法是使用 SVD 并计算一个 H 矩阵,该矩阵可用于将任何坐标从一个视角转换到另一个视角。我将使用这种方式,因为我可以在 matlab 中解决这种方式。 Objective-C 的下一步!我在objective-c中计算相同时遇到了一些麻烦。更多信息在这里:calculate the V from A = USVt in objective-C with SVD from LAPACK in xcode

我也想知道怎么解决三角法!我不知道 culebron 的帖子中的 a1 和 a2 是什么:https://stackoverflow.com/a/1690300/1568532 宽度和高度对我来说都没有多大意义。

我还想知道如何根据 3 或 4 个坐标计算 EYE 在三角形或四边形上的视点。如果您知道对象的原始大小。 对此有何想法?

当我搜索眼睛或相机的视角时。有很多关于摄影的结果。 我需要用什么来计算这个?也许有人举个例子?

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多