线性代数转换矩阵 - 通过乘以矩阵从点到不同点
Linear Algebra Transformation Matrix - From a point to a different point by multiplying by a matrix?
我只熟悉线性代数,但是我正在尝试在我正在处理的图形应用程序上进行十字准线。
I have a point: (x,y,z)
,我正在尝试将其提示:
(2/(x+y),(5y+z)/(2x+2y),3)
我一直在阅读,可以通过将我的观点乘以"转换矩阵"来完成我所需的观点。但是我不确定该怎么做。
有人知道如何将其转到该坐标吗?如果我能看到最终结果,我可以尝试扭转它。
您必须添加一个均匀的坐标 w ;那么您的方程式为form
[x,y,z,w = 1] * [4x4] matrix = [wx,wy,wz,w],在w的位置(应为(x y)),您可以达到预期的结果...
因此,您必须找到一个代表以下方程的矩阵M:
WX = 2,
WY = 2.5y+0.5z,
WZ = 3x+3y,
W = x+y
您不能直接执行此操作,因为只有线性转换(http://en.wikipedia.org/wiki/linear_map)可以由矩阵表示,并且您的转换不是线性的。您可以做的是重写您的转换如下:
(x,y,z,w)->( 2w , 5y/2+z/2 , 3x+3y )
现在是线性的,其各自的转换由以下方式给出:
T(x,y,z,w)=[0 0 0 2; 0 5/2 1/2 0; 3 3 0 0]*(x,y,z,w)
矩阵由[]和每一行之间的数字给出。如您所见,您现在有一个线性转换,该变换不给出所需的点,但是如果您在W = 1中评估转换,并且还将结果向量中的每个条目除以(x y),则有您要实现的结果。我的意思是,
(2/(x+y),(5y+z)/(2x+2y),3) =
[1/(x+y)]*[0 0 0 2; 0 5/2 1/2 0; 3 3 0 0]*(x,y,z,w=1)
我希望这对您有用。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 了解 GLM- openGL 中的相机转换
- 线性代数转换矩阵 - 通过乘以矩阵从点到不同点