我有旋转矩阵,平移向量和一组3D分类点(类别取决于z坐标)。一个2x2旋转矩阵M和一个2x1平移向量T与一个范畴有关。
如何将旋转和平移矩阵应用于坐标(x,y,z)的每个点上?是简单地,还是我误解了旋转矩阵的原理?
add to M a column and a line of 0
add to T a 0 for the z-transformation
then : (x, y, z) = M * (xp, yp, zp) + T
这几天我都要死了。不是开玩笑,但我真的很紧张,因为我一直在努力解决这个问题。
我目前正在尝试使用仿射变换矩阵在HTML5中创建等距投影。我收到一块瓷砖,它是一个旋转45度的方形(基本上是方形帆布上的方形钻石)。然后,我缩放一个轴‘取决于是否有一个三角洲在x或y方向。然后,我用一个因子使轴倾斜来拟合。然后,我用-45度的旋转来否定初始的旋转。
目前,我的仿射矩阵是:
// note: the difference in z is about 10 in this example,
// so, xDiff is usually 40
var xDi
我的代码中有一个bug,我想知道这是不是不正确。
我的代码中有一个2D视图矩阵,但要在屏幕上显示我的世界,我需要将2D视图矩阵转换为3D视图矩阵。这是我正在使用的过程:
| a b c | | a b c 0 |
| d e f | => | d e f 0 |
| g h i | | g h i 0 |
| 0 0 0 1 |
当我对2D矩阵使用单位矩阵时,它就会起作用,但一旦我对2D矩阵应用任何变换,我绘制的所有对象都会消失。
对于使用3D在2D中绘制,我使用此投影矩阵:
_basicEffect.Projection = Mat
问题:我试图用特征JacobiSVD模块来计算旋转矩阵的奇异值分解。
期望:我应该能够将本征::affine3d类型的旋转矩阵传递给svd方法,然后利用SVD中的U和V生成一个新的本征型旋转矩阵::affine3d。
观察到,svd方法不把my tSixDof矩阵作为可接受的参数。
问题为什么不能使用仿射矩阵作为输入?有更好的方法来执行这个手术吗?
// Resolve numerical errors in the rotation matrix by implementing the
// orthogonal procrustes problem algorithm.
void Si
使用Eigen C++库,我很难理解Transform::linear()函数。根据文档,它返回the linear part of the transformation。但这意味着什么呢?难道所有的矩阵变换都是线性的吗?
此外,从其他地方看到的一些例子来看,它返回的值似乎是一个Eigen::Matrix3d (或者可以隐式转换为这个值)。对我来说,这意味着它可能只是返回转换的旋转部分,它的长度为3 (x、y和z)。但是,还有一个Transform::rotation()函数,它根据文档返回the rotation part of the transformation。
那么,有人能向我解释一
对于图形专家来说,这可能是一个愚蠢的问题(我不是),但仿射变换和关键帧之间的区别是什么?我在iPhone cookbook中读到了前者,她说“仿射变换使您能够通过将对象从一个视图坐标系映射到另一个视图坐标系来更改对象的几何形状”。这让我想起了当我使用Adobe After Effects时,你会设置开始,“中间”和结束位置,并且会得到一个很好的视觉动画。他们称之为关键帧。那么这和仿射变换有什么区别呢。它是2D和3D的东西吗?谢谢大家。
我正试图将表示网格(有已知行数和列数)的图像转换为或多或少匹配一幅表示网格样模式的图像。
我使用不正则函数来获得仿射变换:
[ a b 0 ;
c d 0 ;
e f 1 ]
并将获得的tform应用到我的网格中。效果不太好。
请考虑以下简化:
base=im2uint8(zeros(16)); base([3:5 10:12],[3:5 10:12])=255;
target=im2uint8(zeros(16)); target([4:8 11:15],[4:8 11:15])=255;
[optimizer, metric] = imregconfig('monomod