首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建模型矩阵的世界

如何构建模型矩阵的世界
EN

Stack Overflow用户
提问于 2017-02-18 00:36:47
回答 1查看 394关注 0票数 0

我目前正在开发我的第一个光线跟踪器,我决定实现一个模型到世界矩阵的使用,将我的相机/初级光线转换到模型空间,以简化原始形状的相交算法,包括球体,平面,圆柱体和圆锥体。

例如,对于圆柱体,我想要转换光线原点和方向,以测试与高度为1、半径为1、位置为(0,0,0)和方向/方向/旋转(0,1,0)的圆柱体是否相交。(xyz格式,x向右,y向上,z向远)。

我也知道光线在世界空间中的起源和方向。

如何为任何类型的圆柱体确定模型变换矩阵的世界?(示例:高度2,半径3,位置(4,5,6)和方向(1,2,0))

我尤其在正确解释圆柱体的方向和光线-圆柱体相交算法方面遇到了困难。

希望能得到一些帮助!

请注意,我已经在网上做了大量的研究,矩阵不是我的强项,但我期待着阅读您的建议/答案。

最后,我用C语言实现了这一点,使用SDL,math.h和我自己的矩阵函数等等。

爱!<3

EN

回答 1

Stack Overflow用户

发布于 2017-02-18 01:44:07

在空间中定位和定向对象的最佳方法是为其设置一个四元数。它基本上包含给定空间(例如,world)中位置和旋转的信息。可以从一对简单的向量-位置和方向-创建一个四元数。要应用存储在这样一个四元数中的转换,必须从它创建一个矩阵。在光线跟踪的情况下,需要使用对象四元数的逆矩阵将光线变换到模型空间(从世界变换到模型空间,假设光线在世界空间中),在模型空间中进行相交,最后将交点变换回世界空间(使用已经提到的非逆四元数矩阵)。

这只是理论。自己实现四元数是一件苦差事。最好使用一些现有的库,例如GLM。确保它具有所需的功能-从一对向量创建四元数,将其转换为矩阵,并反转矩阵/四元数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42303034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档