总是阻碍我做3D编程的一件事是无法理解数学是如何工作的.我可以使用方法和函数在编程流程中使用数学,然后它对我来说都是清晰和合乎逻辑的,但在数学符号中,我无法从它做出正面或反面.
我一直在阅读网站,观看研究所试图解释这个问题的视频,但他们都使用数学符号,我只是迷失在其中,我的思想不会将其转化为可理解的东西.我可能有缺陷.
另外,只是使用某人的代码不是我的兴趣,我想了解它背后的机制,逻辑.我很乐意使用其他人的代码,但我真的想了解它是如何工作的.
这个问题
你能用简单的术语向我解释没有数学符号,只是编程符号/函数/伪代码,如何沿所有3轴实现矩阵变换?
理想情况下我想要的是编写方法/对象的材料/理解,我可以在其中定义3个轴的角度,类似于glRotate,以旋转我所拥有的四边形/三角形的集合.(我正在尝试编写立方体形状的3D旋转而无需访问OpenGL函数来为我执行此操作,因为每次在显示列表中发生更改时,都会在一次绘制调用中完成.)
我做了什么?
我试图制作一个90度的变换函数来获得数学的悬念,但是在制作一个理论上最简单的矩阵时却完全失败了.你可以在http://jsfiddle.net/bLfg0tj8/5/看到我失败的尝试.
Vec3 = function(x,y,z) {
this.x = x;
this.y = y;
this.z = z;
}
Matrix = function Matrix() {
this.matrixPoints = new Array();
this.rotationPoint = new Vec3(0,0,0);
this.rotationAngle = 90;
}
Matrix.prototype.addVector = function(vector) {
this.matrixPoints.push(vector);
}
Matrix.prototype.setRotationPoint = function(vector) {
this.rotationPoint = vector;
}
Matrix.prototype.setRotationAngle = function(angle) {
this.rotationAngle = angle;
}
Matrix.prototype.populate = function() {
translateToOrigin = [[1,0,0-this.rotationPoint.x],
[0,1,0-this.rotationPoint.y],
[0,0,0-this.rotationPoint.z]];
rotationMatrix = [[0,-1,0],
[0,1,0],
[0,0,1]];
translateEnd …Run Code Online (Sandbox Code Playgroud)我正在寻找在THREE.js中找到两个定义矢量之间的旋转矩阵的方法.
例如
v1 = new THREE.Vector3(1, 1, 1)
v2 = new THREE.Vector3(1, 1, -1)
我需要这个旋转矩阵来在下一步中旋转整个对象.
我见过几个类似的问题,并对我可能尝试的内容有一些想法,但我不记得看到过任何有关传播的内容。
所以:我正在开发一个测量系统,最终基于计算机视觉。
我进行 N 个捕获,并使用一个库来处理它们,该库以平移和旋转的 4x4 仿射变换矩阵的形式输出姿势估计。
这些姿势估计中有一些噪音。每个旋转轴的欧拉角的标准偏差小于 2.5 度,因此所有方向都非常接近(对于所有欧拉角都接近 0 或 180 的情况)。小于 0.25 度的标准误差对我来说很重要。但我已经遇到了欧拉角特有的问题。
我想对所有这些非常接近的姿势估计进行平均以获得单个最终姿势估计。我还想找到一些传播的衡量标准,以便我可以估计准确性。
我知道“平均”对于轮换实际上并没有很好的定义。
(郑重声明,我的代码是使用 Numpy 的 Python 编写的。)
我也可能想对这个平均值进行加权,因为已知某些捕获(和某些轴)比其他捕获更准确。
我的印象是,我可以只取平移向量的平均值和标准差,对于旋转,我可以转换为四元数,取平均值,并以良好的精度重新归一化,因为这些四元数非常接近。
我还听说过所有四元数中的最小二乘法,但我对如何实现这一点的大部分研究都以惨败告终。
这可行吗?在这种情况下是否有一个合理明确的传播衡量标准?
geometry quaternions affinetransform rotational-matrices pose-estimation
我刚刚在3D项目中遇到了奇怪的问题.每个人都知道计算LookAt向量的算法,但是从变换矩阵计算"向上"向量并不是那么容易(或者至少可能是我简单错过了一些东西).
问题如下:
"向上"向量是(0,1,0)用于同一性旋转矩阵并用矩阵旋转,但不进行缩放或平移.如果你有简单的旋转矩阵程序很容易(乘法矢量和矩阵).但是,如果矩阵也包含平移和旋转(例如,它是通过乘以其他几个矩阵产生的),这将不起作用,因为矢量将被平移和缩放.
我的问题是如何从单个变换矩阵获得这个"向上"向量,假设向量(0,1,0)对应于单位旋转矩阵.