c++ - 将世界空间 vector 转换为局部空间

标签 c++ math vector raytracing coordinate-systems

<分区>

我正在编写一个将球体与区域光源相交的光线追踪程序。我有那个载体

  • wo(w - 即将离任)
  • wi(w - 传入)
  • n(表面法线)

enter image description here

我如何将该 vector 从世界坐标系转移到局部坐标系。我搜索了一个 c++ 算法,该 vector 的转换位于同一个半球。谢谢。

注意: 例如,该局部坐标系中的法 vector 坐标为: n2 = vector (x=0, y=1, z=0)

编辑: 我正在搜索“wo1”、“wi1”和“n2”局部 xyz 坐标值。

最佳答案

您将位于世界坐标系中的 vector 投影到构成局部坐标系基础的 vector 。

例如,如果您的本地坐标系基础是跨越您本地的三元组 vector (例如,LxLyLz) vector 空间。 wo 在本地系统中的坐标将是:

wo_local_x = wo . Lx;
wo_local_y = wo . Ly;
wo_local_z = wo . Lz;

其中 . 表示点积。

关于c++ - 将世界空间 vector 转换为局部空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33031758/

相关文章:

c++ - 将字符指针存储到容器中

c++ - C++ 应用程序 (Sci)Python 之间的数据交换

c++ - 具有默认移动构造函数的复合类的移动后使用 POD 部分

c# - .NET 及更高版本 : best practices for using double arithmetic

javascript - JS如何求最大公约数

r - 使用角色作为线性模型的对象(R)

c++ - 在 hdf 中存储数据集(C++ 类的实例)

image - 将 DICOM 中的体素转换为 mm^3

c++ - 如何将一维数组更改为二维 vector ?

r - 如何从 R 中的向量列表创建矩阵?