问题标签 [matrix-transform]

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 回答
245 浏览

android - 缩放第二个枢轴点

我目前正在为游戏开发使用转换矩阵。我们拥有的一个功能是基本缩放,这是在用户捏住屏幕时完成的。现在我们知道,为了缩放/放大一个点,我们需要使用用户两根手指之间的中点,我实现了这个。

转换顺序:

问题是当用户在最近执行另一个缩放时在对象的另一部分进行缩放,或者如标题所述,在不同的轴心点进行缩放。我当前的实现在一定距离内抖动和传送对象并在该区域执行缩放。所以;

  • 如何缩放第二个枢轴点?
  • 我需要参考上一个枢轴点吗?
  • 两个枢轴点如何相互关联,以及如何将它们转换为矩阵变换。
0 投票
2 回答
1347 浏览

python - 将包含矩阵对角线以下元素的列表转换为完整矩阵

我想从对角线下方的元素列表中创建一个成熟的矩阵。以下列表包含对角线下方的元素: 在此处输入图像描述

这将是所需的输出:

在此处输入图像描述

到目前为止,我尝试通过实现以下代码在 python 中使用普通的 sintax 进行这项工作:

但是,输出如下:

最终名单:[[1, 0.1, 0.6, 0.4], [0.1, 1, 0.1, 0.2], [0.1, 0.1, 1, 0.7], [0.7, 0.1, 0.1, 1]]

它执行前 2 个列表,它们代表矩阵中的 2 行,但由于我的代码的工作方式,不会执行最后 2 个列表,到目前为止我不知道解决方案。

这是因为我的计数器会使列表超出范围。我查看了很多关于堆栈溢出的帖子,但我找不到适合我的情况的东西。如果你能指出一个类似的例子,那将是完美的。

感谢您的时间和建议!

更新: 我的问题不是Numpy 的副本:将数组转换为三角矩阵,因为我不想创建一个矩阵,其中我的数组值只是下三角矩阵的一部分,而是它们也在上三角矩阵。

0 投票
0 回答
520 浏览

c# - 将翻译转换应用于图像 C#

我正在尝试使用鼠标右键移动图像,使用 a MatrixTransform(我正在使用MatrixTransform,因为我也在缩放图像)。

这是我的Xaml代码:

在我的ViewModel

}

当我执行以下操作时,图像确实移动(平移)但非常模糊,就像图像在移动时“碰撞”一样。

我也尝试使用 a TransformGroup,将其MatrixTransform作为第一个孩子进行缩放,将其作为TranslateTransform第二个孩子进行移动,但是当我做了一个小动作时,图像就成了界限。

我错过了什么?

0 投票
0 回答
115 浏览

c# - 如果在 WPF 触摸屏应用程序中与另一个形状发生碰撞,则停止 System.Windows.Shapes.Rectangle 惯性

我正在开发触摸屏应用程序。这个应用程序是针对某个行业的,但一般的理想就是解释问题所需要的。首先,我在 WPF 上进行速成课程,并允许用户添加一个新命令(形状 - 矩形),然后为其分配功能。例如,他们可以添加一个,然后添加第二个,然后添加第三个,依此类推,将它们定位在他们想要的位置。

我想知道的是如何在惯性发生时告诉 API 并说用户触摸一个形状然后将其扔过屏幕,以便事件不仅在到达屏幕边缘时完成(已经这样做了) ,但如果它相交或撞到另一个形状。以下是快速基本概念证明的通用代码。

问题是惯性工作正常。一旦第二个形状被添加到画布上,惯性就不再起作用了。用户可以单击并拖动它们,但是当试图轻弹形状时,它们会立即停止,就好像它从所有位置报告它正在与另一个形状相交,即使它们彼此不靠近。关于我做错了什么的任何想法?用户添加一个或多个项目后的示例,触摸拖动和甩动中断

0 投票
1 回答
32 浏览

r - R - 将数据框添加到矩阵

我正在尝试将具有位置数据和值的数据框(视为向量)转换为使用位置数据作为行名和列名的矩阵。

(运行代码片段以查看布局示例。)

向量示例:

矩阵示例:

我想要的结果是:

本质上,我想将数据框视为一系列向量并将它们转换为矩阵,但我过去的尝试导致矩阵将自身转换为列表。

有谁知道如何做到这一点?

先感谢您。

0 投票
1 回答
237 浏览

matrix - 倾斜/倾斜纹理 - Monogame

我正在尝试倾斜/倾斜纹理以为我的游戏创建一些阴影。我已经阅读了这个有用的答案,表明这可以通过将矩阵传递给 spriteBatch.Begin() 来完成。

因为我的线性代数技能不是很发达,所以我在达到我想要的结果时遇到了一些麻烦。我希望扭曲我的阴影,使其看起来类似于以下内容。阴影倾斜了一个角度,但阴影的底部与精灵的(在本例中为脚)底部对齐。在此处输入图像描述

我最初绑定了上面解决方案中提供的倾斜矩阵:

但这最终会使阴影相对于世界的起源旋转。我看到解决方案也注意到了这一点,并提供了跟随以再次旋转精灵。

虽然我不确定在哪里应用这个 myMatrix 矩阵。我已经尝试将它应用于阴影精灵、铸造阴影精灵,并将它们相乘并应用于阴影,但没有成功。

我也尝试过使用其他方法Matrix.CreateRotationX(MathHelper.ToRadians(0.87f)),比如没有运气。

实际上也有一种Matrix.CreateShadow()方法,但它需要一个平面,而我在我的游戏中没有这种方法。

谁能帮我找出这个slanting所需的矩阵,或者指出一些资源的方向?

谢谢!

0 投票
0 回答
425 浏览

javascript - 在fabricJS中以相同的左原点缩放时保持相同的对象大小

我看过这篇文章并尝试仅使用 X 缩放来完成我自己的功能。

唯一的问题是对象变换是从中心开始的。这意味着如果我有一个正方形10 * 10 pixels和缩放left = 0top = 0我不会有任何问题,zoom = 1但是当我增加缩放时让我们说 2。我的对象仍然从 0 开始,但我的对象出现在我的20 * 10选择中间。

这个片段不言自明。一开始所有的行都连接在一起。但变换后对象被分离。

任何帮助是极大的赞赏

0 投票
1 回答
416 浏览

c# - OpenGL 4.2 LookAt 矩阵仅适用于眼睛位置的 -z 值

我正在尝试理解和应用现代 OpenGL 矩阵转换。我已经阅读了很多不同的资料,但我不确定我实际上做错了什么。

我遇到的问题也在代码中进行了注释:如果我将 Matrix4.LookAt 的眼睛坐标设置为大于或等于 0 或小于 -2 的 az 值,则三角形不再可见。

有人可以解释为什么吗?据我了解的方法,三角形应该只是从另一侧可见(明确禁用面部剔除不会改变任何东西)。

另一件事很奇怪:如果我旋转三角形,如果我使用 eye-z = -2; 它似乎会被剪掉;如果我使用 -1 它看起来“更平滑”。有任何想法吗?

这是完整的程序:

0 投票
1 回答
1350 浏览

python - 如何通过投影矩阵从 KITTI 获得鸟瞰图?

目标是从 KITTI 图像(数据集)中获得鸟瞰图,并且我有投影矩阵(3x4)。

有很多方法可以生成变换矩阵。对于鸟瞰图,我已经阅读了一些数学表达式,例如:

H12 = H2*H1-1=A R A-1=P*A-1 in OpenCV - 投影、单应矩阵和鸟瞰图

和 x = Pi * Tr * X 在kitti 数据集相机投影矩阵中

但这些选项都不适用于我的目的。

蟒蛇代码

将 numpy 导入为 np 导入 cv2

image = cv2.imread('数据/RGB/000007.png')

最大高度,最大宽度 = image.shape[:2]

M 有 3x4 尺寸

M = np.array(([721.5377, 0.0, 609.5593, 44.85728], [0.0, 721.5377, 72.854, 0.2163791], [0.0, 0.0, 1.0, .002745884]))

这里需要一个 3x3 维度的 M 矩阵

warped = cv2.warpPerspective(图像, M, (maxWidth, maxHeight))

显示原始图像和变形图像

cv2.imshow("原始", 图片)

cv2.imshow("扭曲", 扭曲)

cv2.waitKey(0)

我需要知道如何管理投影矩阵以获得鸟瞰图。

到目前为止,我尝试过的所有事情都会向我抛出扭曲的图像,甚至没有接近我需要的信息。

这是来自 KITTI 数据库的图像示例。

这是来自 KITTI 数据库的另一个图像示例。

左侧显示了检测汽车的 3D(上)和 2D(下)图像。右边是我想要获得的鸟瞰图。因此,我需要获取变换矩阵来变换分隔汽车的框的坐标。

0 投票
1 回答
2355 浏览

c++ - 使用 pcl transformcloud 将 3d 点平移和旋转到原点

给定从 charucoBoard 角的相机姿态估计获得的旋转矩阵和平移矩阵,我想通过使用齐次变换将一个特定的角转换为原点。如果我理解正确,相机在相机世界中的位置是(0,0,0),并且旋转矩阵和平移向量也在相机坐标系中解释。

平移向量告诉您相机坐标系中的确切位置,而旋转矩阵告诉您相对于相机的旋转角度。

然后我将我的齐次变换矩阵构造为:

其中 rmatrix 是我的旋转矩阵, tvec 是平移向量

和transformation_matrix的输出是

旋转矩阵为:

翻译向量:

transformpointcloud然后 我使用pcl::transformPointCloud (*cloud, *transformed_cloud, translation_matrix);

但是,我无法在转换后将点与原点对齐。有没有人知道我可能会出错的地方?

更新:


我测试了之前和之后的转换,发现我的齐次矩阵转换是不正确的:

这是从电路板侧面获取的深度数据 如您所见,x、y、z 轴分别显示为红色、绿色和蓝色,白色点云在前面,红色点云在后面。我发现图像已正确翻转到我想要的方向,但原点(红色、绿色和蓝色轴的交点)有时未连接到板的角之一,并且 x 轴与董事会的边界。

我可以肯定的一件事是,当相机平行于电路板时,x 轴也平行于转换后的图像。 从板顶部的直角拍摄

我推测我缺少一两个旋转轴。

我通过使用 R*P + T 公式用以下代码标记另一个角,确保我的角的旋转矩阵和平移向量是正确的:

板的长度是 0.4 米,所以我将corner1_0 设置为 (0.4, 0, 0),然后这是我为指示目的绘制的两个标记轴的图像

如您所见,旋转矩阵和平移向量是正确的。非常感谢任何帮助/提示/推测:)