问题标签 [projection-matrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
580 浏览

ios - 使用 CATransform3D 和 GPUImage 将矩形转换为四边形

我正在尝试将矩形转换为四边形并创建一个CATransform3D投影矩阵,如 hfossli here所述。
矩阵与 aCALayer一起使用没有问题,但我想/必须将它与GPUImageand一起使用GPUImageTransformFilter,它需要 a CATransform3D

它真的不起作用。缩放不合适,这意味着我的转换图像被剪切或点没有“拉伸”到它们应该在的位置。有一些线程描述了从OpenGL投影到正确CATransform3D投影矩阵的转换,如这里
它涉及一些缩放和 y 翻转。

因此,我尝试以相反的顺序缩放和翻转,希望能够将此CATransform3D矩阵与 一起使用GPUImageTransformFilter,但无法真正使其工作。

也许有人解决了这个问题?

0 投票
1 回答
699 浏览

android - 如何估计给定点之间的距离?

我的值 P1,P2,P3,P4 带有屏幕点 (x,y) 和经度、纬度。除此之外,我还有一个摄像头(带纬度、经度)、摄像头的高度(1.6m(常数))和摄像头的方向(轴承、俯仰、滚动)。我也有相机的水平视角和垂直视角:)

现在我想计算 PX(lat,long) 在我的显示器上的估计位置(如果它可见)。 跟随问题

对于给定的 PX(lat,long),如何获得 P(?,?)?(图中的紫色点)这似乎是可能的,因为我知道我的相机的角度并且我有所有四个顶点。但我不知道如何解决这个问题。

我需要一个基于这四个顶点的函数,它可以将 (lat,long) 转换为 (screenX, screenY)。

我有一个公式,可以将 (screenX, screenY) 转换为 (lat,long),但我无法反转这个公式。因此,如果需要除顶点之外的其他点,我可以计算它们(但我不能简单地对屏幕中的每个像素使用这个公式......那将是每 100 毫秒一百万次方法调用......)

0 投票
1 回答
346 浏览

opengl - OpenGL中的透视投影矩阵

我是一个新的透视分割现象。我正在使用以下代码在 3D 空间中渲染一个简单的正方形:

}

顶点着色器是:

这里的问题是,当所有四个顶点都具有相同的 z 值时,根本不会渲染任何内容。另一方面,如果两个顶点的 z 坐标为 -1,则投影矩阵可以正常工作。我不确定这里出了什么问题。

0 投票
1 回答
1507 浏览

vb.net - OpenGL中的像素完美投影矩阵?

我正在使用 OpenTK,我希望能够在 Z 为某个数字时完美渲染多边形和纹理像素,投影中的其他任何地方都无关紧要(这是用于 UI)。有没有办法设置一个投影矩阵来做到这一点?

0 投票
1 回答
1409 浏览

opencv - 查找投影矩阵

首先,我想为我糟糕的英语道歉。

我是 OpenCV 和虚拟现实的新手。我试图找出图像处理的理论,但对我来说缺少一些要点。我了解到投影矩阵是将 3D 点转换为 2D 的矩阵。我对吗?基本矩阵为我提供了有关两个相机之间旋转的信息,基本矩阵提供了有关一个图像中的像素与另一图像中的像素之间的关系的信息。单应矩阵将两个图像中像素的坐标联系起来(正确吗?)。基本矩阵和单应矩阵有什么区别?

我需要所有这些矩阵来获得投影矩阵吗?我是这些新手,所以如果可以的话,请试着简单地解释一下。谢谢你的帮助。

0 投票
2 回答
1956 浏览

math - 将 3D 坐标投影到具有已知点的 2D 图像上

我正在编写一个 .NET 程序,该程序允许用户通过识别图像上的特定点然后指定与这些点中的每一个相关联的真实世界坐标来注册图像。

http://www.ironbyte.ca/temp/mountain.jpg

图像配准过程还需要用户指定相机的坐标。

注册图像后,我希望能够根据它们的真实坐标在图像上绘制其他点。

我已经阅读了大量有关透视投影的内容,但我正在努力让事情正常进行。我必须承认,我的数学技能不是应有的水平,这是斗争的一部分。我被卡住的地方是试图确定焦距和到显示表面的距离:

在本文中称为查看者的位置 (e [x,y,z]):http ://en.wikipedia.org/wiki/3D_projection#Perspective_projection

我也一直在参考这篇文章:http://www.shotlink.com/Tour/WebTemplate/shotlinknew.nsf/2c47cc31e412bc4985256e6e00287832/c1743b40acf6aa03852575b7007122b0/$FILE/Plotting%203D%20ShotLink%20Data%20on%202s .pdf 从视野中提取焦距,这似乎是事先知道的,但在我的情况下不是。

所以我想我的问题是,有没有一种方法可以根据图像上已知点的位置反向确定焦距和/或视野?还是我看错了,也许有更简单的方法来实现最终目标?

0 投票
3 回答
5657 浏览

opengl - OpenGL 投影矩阵

我试图让一个基本的 OpenGL 程序正常工作。我创建了两种方法来创建模型视图矩阵(目前非常初级,它只在 Z 轴上移动我的对象)和投影矩阵。

我的问题是,据我了解 OpenGL,我的投影矩阵应该将具有正 Z 坐标的顶点放置在屏幕上,而将具有负坐标的顶点放置在屏幕后面。

但我的经验是,如果我想要显示它,我需要将我绘制的立方体移动到负 z 方向。你能解释一下,这是为什么吗?我哪里错了?还是我的代码有错误?

我使用这个函数来创建我的投影矩阵:

而这个模型视图(我传递不同的偏移量,它们在 0 左右摆动,z 在 -2 左右摆动):

矩阵都正确传递给opengl,我通过以下方式计算顶点位置:

这是整个代码,以防有人需要它:

主文件

主文件

0 投票
1 回答
56 浏览

iphone - IOS编程中没有出现文件

我正在使用 Xcode 编写一个属于游戏类型的新应用程序,当我运行它时,我用作主角的文件没有出现。这只是一个基本的脚本,但我希望它在第一次就正确。这是我认为问题所在的代码:

0 投票
1 回答
948 浏览

c++ - OpenCV:projectPoints 可以返回负值吗?

我正在使用 cv::projectPoints 来获取 3D 点向量的对应像素。

这些点都彼此靠近。

问题是,对于某些点,我得到正确的像素坐标,但对于其他点,我得到奇怪的负值,例如 -22599 ...

cv::projectPoints 返回负值是正常的还是我的代码中的错误?

提前感谢您的任何建议。

0 投票
1 回答
1453 浏览

graphics - 从 Unity3D 到 DirectX 的投影矩阵

我发现这个问题是为了在 OpenGL 和 DirectX 之间执行转换,但是从 Unity3D 执行相同的事情时它似乎不起作用。

我希望这里有人知道 OpenGL 投影矩阵和 Unity3D 投影矩阵(和视图矩阵!)之间的区别。

我也尝试过使用这篇文章,但也没有用。

在 Unity3D 中,我调用了我自己的原生 C++ 插件:

在我的 C++ 插件中,我尝试通过文章转换这些矩阵:

我知道东西是绘制出来的,因为使用单位矩阵作为视图和投影矩阵确实给了我一个三角形的顶点:{0,0,0},{0,1,0},{1,0,0}。而且我在移动相机时也会看到各种剪切效果。

编辑 - 更多信息:
Unity3D 文档告诉我们它使用 OpenGL 表示法。

编辑 - 示例项目:
如果有人想试用我的代码,我已经创建了一个测试项目并将其上传到统一论坛。