我有一个非常笼统的问题。我希望确定多个对象的边界点(包括30-50个闭合的多边形(z),每个多边形具有约300个点(x,y,z))。我正在使用固定的视口(viewport),该视口(viewport)绕多边形的坐标系原点绕x,y和z轴(alpha,beta,gamma)旋转。
在我看来,有两种可能性:透视投影或光线追踪。透视投影似乎需要为每个点进行大量矩阵操作,以确定其位置在视口(viewport)之内还是之外。
还是给定大量的点,我最好是将视口(viewport)像素射线追踪到对象上?
即确定是否存在相交,然后确定相交发生在对象内部还是没有对象。
无论哪种情况,我都会将此结果写为0(外部)或1(内部)到200x200一个代表视口(viewport)的整数矩阵
谢谢你的期待
最佳答案
透视投影(然后对图像坐标中的多边形进行扫描转换)将更快。
进行光线追踪时,以完全相同的方式要求进行透视投影时所需的矩阵变换(本质上是世界相机矩阵)。但是,使用透视投影时,您只变换了角点,而使用光线跟踪时,则是变换了图像中的所有点。
关于c++ - 透视投影与光线追踪/射线转换的效率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1537112/