文件交换

图像缩略图

硬件加速Ray-Triangle交叉点

版本1.2.0.0(35.6 kB) 托马斯
GPU便携式实施Moller和Traumbore的Ray-Triangle交叉点(1997)

744下载

更新2015年2月13日

查看许可证

Muller和Trabure的%射线三角形交叉算法(1997)
为ArrayFun格式化以允许硬件加速度
用GPUArray和ArrayFun呼叫以在GPU上执行:THJS
%可以给出两个级别加速两个
基于CPU的实现
% 输入:
%p0x,p0y,p0z / p1x,p1y,p1z / p2x,p2y,p2z:XYZ组件
%三角形对象
%ORX,ORY,ORZ:射线原点的XYZ组件
%dx,dy,dz:射线方向(单元)向量的XYZ组件
% 输出:
%stortout:从射线到原点或南部的距离
%如果没有交叉点
%标志:逻辑rist表示交叉口和false表示
%没有十字路口
%使用示例:
%步骤1:将MX3方向向量转换为GPUArray对象
%>> gd = gpuarray(d);
%步骤2:使用标量输入格式使用ArrayFun调用RaytrigPu
%p0,p1,p2是三角形角点的nx3顶点列表
%以及原产地的XYZ坐标
%>> [dist,flag] = arrayfun(@ raytrigpu,p0(:,1)',p0(:,2)',p0(:,3)',...
%p1(:,1)',p1(:,2)',p1(:,3)',...
%p2(:,1)',p2(:,2)',p2(:,3)',...
%或(:,1),或(:,2),或(:,3),...
%GD(:,1),GD(:,2),GD(:,3));
%步骤3:恢复数据
%距离=聚集(dist);
%输出是一个MXN阵列,其包含距离Ray-Tri的距离
如果没有交叉点位于原点或南部的%交叉
基于Paul Peeling的%植入(最初来自耶稣P.
%Mena-Chalco的FEX),Mathworks(返回旗帜但不是
%交叉距离)。

可以使用以下方式从输出DIST获得每个射线标志
% 方法:
%>> flagt = true(大小(d,1),1);
%>> flagt(sum(iSnan(dist),2)== size(p0,1))= false;
%这可以节省GPU的转移时间

%依赖项:需要并行计算工具箱
百分比测试数据(testdatatri.mat)随包提供

% 参考
%快速,最小存储射线/三角形交叉口,möller和traumbore。
图形工具%Chinus,1997年。

引用

托马斯(2021)。硬件加速Ray-Triangle交叉点(//www.tatmou.com/matlabcentral/fileexchange/49670-hardware-accelerated- ray- ray-triangle-intersection),Matlab中央文件兑换。检索到

Matlab释放兼容性
用R2013A创建
兼容任何释放
平台兼容性
视窗 苹果系统 Linux.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!