首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询点epsilon-使用GPU接近点云中的剖切面

查询点epsilon-使用GPU接近点云中的剖切面
EN

Stack Overflow用户
提问于 2008-09-16 21:21:33
回答 4查看 790关注 0票数 4

我正在尝试使用GPU功能来解决当前的问题:“给定一个点云P和一个由点和法线(Pp,Np)描述的定向平面,返回云中与平面的距离等于或小于EPSILON的点”。

与我的一位同事交谈后,我倾向于以下解决方案:

1)准备具有附加纹理坐标的点的顶点缓冲器,使得每个点具有不同的顶点坐标2)将投影状态设置为正交3)旋转网格,使得平面的法线与-z轴对齐并偏移它,使得x,y,z=0对应于Pp 4)设置z-裁剪平面,使得z:-EPSILON;+EPSILON 5)渲染到纹理6)从图形卡检索纹理7)从图形卡读取纹理并查看渲染了什么点(根据它们的索引),这些点是在期望的距离范围内的点。

现在的问题是: q1)我需要打开一个窗口框架才能进行这样的操作吗?我在MATLAB中工作,并调用MEX-C++。根据我的经验,我知道一旦你打开一个新的框架,整个套装就会崩溃得很痛苦!q2)为GLPoint提供纹理坐标的原语是什么?q3)我不太清楚纹理的渲染是如何实现的?任何参考,教程都会很棒……q4)您将如何从卡片中检索此纹理?再说一次,任何参考和教程都会很棒……

我的日程安排很紧,因此,如果你能指出我应该学习的技术的名称,而不是像其他人那样学习GLSL规范文档和OpenGL API,那就太好了。对于我的问题,这些回答有点太含糊了。

非常感谢您的评论。

附注:还请注意,如果可能的话,我宁愿不使用任何像CUDA这样的资源,因此,在不需要我编写新的着色器的情况下,获得使用尽可能多的OpenGL元素的东西。

注: cross发布在http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=245911#Post245911

EN

回答 4

Stack Overflow用户

发布于 2008-09-17 08:35:49

很简单:设n是平面的法线,x是点。

代码语言:javascript
运行
复制
n_u = n/norm(n)         //this is a normal vector of unit length
d   = scalarprod(n,x)   //this is the distance of the plane to the origin

for each point p_i
    d_i = abs(scalarprod(p_i,n) - d)  //this is the distance of the point to the plane

显然,"scalarprod“表示”标量积“,"abs”表示“绝对值”。如果你想知道为什么,请阅读维基百科上关于标量产品的文章。

票数 1
EN

Stack Overflow用户

发布于 2008-09-16 21:50:14

好吧,首先作为一个小小的免责声明:我对3D编程一无所知。

现在我的纯数学想法是:

给定一个平面的法线N(单位长度)和平面到中心的距离L(点0/0/0)。点X到平面的距离是N和X的标量积减去到中心的距离L。因此,您只需检查是否

|n。X- L| <= epsilon

。是标量积,||是绝对值

当然,你必须先将平面与法线相交,才能得到距离L。

也许这对你有帮助。

票数 0
EN

Stack Overflow用户

发布于 2008-09-18 16:03:29

我有一个问题要问Andrea Tagliasacchi,为什么?

只有当您正在查看1000个点和可能的100个平面时,使用所述方法才会有任何好处。正如我的下士Touchy所概述的那样,与点和面的产生相反。

此外,由于像素的有限性质,你经常会发现两个或更多的点将投影到纹理中的同一个像素。

如果你仍然想这样做,我可以用C++编写一个示例glut程序,但我不知道这对MATLAB有什么帮助,因为我不熟悉它。

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

https://stackoverflow.com/questions/77258

复制
相关文章

相似问题

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