- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何在 Java 中进行透视图转换?据我了解,我可以使用一些神奇的 4 维矩阵来确定 FOV、长宽比以及近距和远距观看距离,但我不知道如何创建该矩阵。
我能够在 Java 中实现“PerspectiveTransform”,但使用以下代码时没有看到任何效果
double mat[][] = {
{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 1, 0}};
PerspectiveTransform ps = new PerspectiveTransform(mat);
ps.transform(p1, p1);
ps.transform(p2, p2);
ps.transform(p3, p3);
ps.transform(p4, p4);
我知道最底部的“1”可能需要是 1/d,其中“d”是距离,但无论我在那里尝试什么数字,我都没有效果。更改其他数字确实有效果,但在我尝试之前我不知道它们会产生什么效果(而且我不能无限猜测)。我知道并且能够使“quadToQuad”函数正常工作,但我再次必须猜测要使用哪个“quads”。
所以我需要一个资源来向我解释如何根据视场、长宽比、距离等得出我需要的矩阵。我已经阅读了“交互式计算机图形学”第五版的相关部分。作者:Edward Angel,但我不明白。
我想做的是将鸟瞰图像转换为人眼 View 图像。使用 Google 地球时可以看到这样的示例..
谢谢
最佳答案
当您执行 ps.transform(p2, p2) 时,您可能会取消以 p1 作为参数的同一指令的效果,但无论如何,该矩阵位置的典型含义如下:
(来源:google.com)
This link也许能为你提供一点帮助。
Also in here ,您可以在“设置投影变换”部分查看如何计算视野
就你的情况而言,我相信你的矩阵应该将最后一行设置为 0 0 0 1,而不是它的样子。此外,视野可以通过同一链接中描述的表达式计算:
void VerticalFieldOfView(float degrees, float aspectRatio,
float near, float far)
{
float top = near * std::tan(degrees * Pi / 360.0f);
float bottom = -top;
float left = bottom * aspectRatio;
float right = top * aspectRatio;
glFrustum(left, right, bottom, top, near, far);
}
“glFrustum(...)”在哪里
void ApplyFrustum(float left, float right, float bottom,
float top, float near, float far)
{
float a = 2 * near / (right - left);
float b = 2 * near / (top - bottom);
float c = (right + left) / (right - left);
float d = (top + bottom) / (top - bottom);
float e = - (far + near) / (far - near);
float f = -2 * far * near / (far - near);
mat4 m;
m.x.x = a; m.x.y = 0; m.x.z = 0; m.x.w = 0;
m.y.x = 0; m.y.y = b; m.y.z = 0; m.y.w = 0;
m.z.x = c; m.z.y = d; m.z.z = e; m.z.w = -1;
m.w.x = 0; m.w.y = 0; m.w.z = f; m.w.w = 1;
glUniformMatrix4fv(projectionUniform, 1, 0, m.Pointer());
}
该示例是用 C++ 编写的,但您所要做的就是将其转换为两个 Java 函数,并使用相应的方法在最后使您的矩阵统一。
关于java - 透视图/变换矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134639/
我使用的是卡片列表,点击后可以翻转这些卡片以显示其他信息。我想添加一些视角以使其看起来不错。 我的问题是,要为列表提供一些视角,我需要将视角附加到 ul 元素。原点然后由父级的大小定义,这使得中间的元
如何在 Java 中进行透视图转换?据我了解,我可以使用一些神奇的 4 维矩阵来确定 FOV、长宽比以及近距和远距观看距离,但我不知道如何创建该矩阵。 我能够在 Java 中实现“Perspectiv
我正在尝试制作一种仅使用 CSS 的幻灯片从一个内容部分过渡到另一个内容部分。为了以一种有趣的方式做到这一点,我使用 CSS 的 perspective 和 rotateX 从本质上放下页面内容。然后
由于某种原因,每当我使用 OpenCV 的 warpPerspective() 函数时,最终的变形图像不包含原始图像中的所有内容。图像的左侧部分似乎被切断了。我认为发生这种情况的原因是因为扭曲的图像是
我不知何故搞砸了我的观点,我想重置它们,但是重置按钮是灰色的。有谁知道会导致这种情况的原因吗? 我希望我有更多的信息,但我真的只知道这些。 最佳答案 转到窗口菜单 => 重置透视图。 编辑: 该选项可
我正在drawRect方法内绘制一些形状。 注意:我没有使用 NSViews 或 Layers。 我正在将形状点转换为 3D,然后将它们绘制到屏幕上......但它们缺乏深度。 这是围绕 y 轴旋转
我正在评估 Eclipse 的 Enterprise IDE 插件,最终决定不购买它。卸载插件后,我留下了一堆无法删除的透视按钮(位于右上角的按钮)。如何在不破坏我的工作空间的情况下手动摆脱它? 编辑
我正在研究根据按下方式倾斜的面板(使用 CSS)。您可以在此处查看工作演示(目前仅针对 Chrome 实现): http://jsfiddle.net/NathanFriend/4tXbZ/ 我注意到
我在使用 CSS 3D 透视属性时遇到问题。 Summer in the mountains 我只想为 :hover 处的 figcaption 设置动画以执行从 -90deg
我想做出与我在透 View 上右键单击并选择自定义以获取此窗口时得到的相同的行为 我只想以编程方式为我的视角自定义菜单和工具栏。 实际上,我只想删除我视角中的大部分菜单和工具栏,让它们在我切换到任
嘿,这些观点已经消失(不再可用)。我怎样才能让他们回来?谢谢 最佳答案 假设您安装了正确版本的 Eclipse、ADT 插件和 SDK: 窗口>打开透视图>其他>DDMS 主要的 android 编码
我正在尝试开发一个 spring boot 应用程序。我正在使用 Eclipse IDE。我从 Eclipse 市场安装了 STS。但我无法打开 Spring 透视图,也无法创建 spring 项目(
正如标题所说,我的 Bottom Sheet 有问题。 我想要在 Bottom Sheet 中添加一个 RecyclerView,其中包含可以随时更改的动态项目。 RecyclerView 前后也有组
在这里需要有关 Eclipse 的线程 View 透视图的帮助.. 由于某种原因,当我在线程 View 中选择特定线程时,看不到线程的详细信息(在刷新按钮下方) 类名被截断并且看不到文件/方法名列..
我正在尝试摆脱 css 中的 3d 转换功能。我此时的代码几乎是直接从教程中复制的,因为无论我多么努力,我似乎都无法让它正常工作。它应该看起来如何的链接是:http://desandro.gith
在 Eclipse 13.7 (Indigo) 中安装 Aptana Studio 3 插件版本后,我看不到 Aptana 透视图。插件已安装,但我无法在 Eclipse 中选择 aptana 透视图
我在墙上有一个图像。我想自己创建它的 3D 透视图。假设给定图像上的点、相机位置、相机方向,如何获得 3d 透视矩阵来播放原始图像? 我知道我可以使用相机的方向来计算 3d 旋转矩阵,但我不知道如何计
当我将 Eclipse 与 SWT_GTK3 UI 结合使用时,我无法输入某些 UI 部分,例如 Eclipse Marketplace 或窗口 -> 透视图 -> 自定义透视图。 运行env SWT
我有一个点击样式,涉及点击时通过 3D 旋转倾斜元素。这是它的样子: 和here is a GIF of the effect working properly with a short list !
这支笔: http://codepen.io/jeremytm/pen/KzOayw 如何在不影响视角的情况下改变盒子的高度? 例如,如果您更改高度,则顶 Angular 和底 Angular 将与之
我是一名优秀的程序员,十分优秀!