猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
一种无需与极坐标相互转换即可旋转矢量的方法
一种方法是:
将原始向量转换为极坐标
按设定量旋转
转换回笛卡尔坐标系
是否有一种更干净的方法,或者不需要进行这些转换的方法
月关宝盒
浏览 106
回答 2
2回答
慕容708150
是的,将 x 和 y 乘以角度的 sin 和 cos。这就是我在 C++ 中的做法:class Rotate2D{public: float cosA, sinA; Rotate2D(const float radRot, const float scale=1.0f) : cosA(scale*cos(radRot)), sinA(scale*sin(radRot)){}; template<typename T> inline Point2DF map(const T &pt) const { return Point2DF(cosA*pt.cx() - sinA*pt.cy(), sinA*pt.cx() + cosA*pt.cy()); }};此代码在 2D 中旋转并可选择缩放。在 3D 中也是同样的事情。扩展几乎是免费的,因此几乎没有理由不使用它。但是,我强烈建议您使用四元数库来旋转 3D 点。
0
0
0
人到中年有点甜
当然有。对于二维来说,矩阵非常简单,就是 | cos A - sin A |R = | | | sin A cos A |其中 A 是您想要旋转向量的角度一旦你组成了一个这样的矩阵,将它乘以你的向量,你就会得到向量旋转量“A”对于二维,请使用文章开头的那个,对于更高维度,谷歌是你的朋友。通过一些调整,您可以将此技术扩展到缩放、移动(平移)和剪切变换。请注意,二维向量乘以 2x2 矩阵会产生与您必须在方法中概述的相同操作。这是一种更干净的处理事情的方式。当维数超过 2 时,它会变得更容易。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Python
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续