一个三维点投影到二维屏幕的点选择的问题
这是一个典型的拾取问题,已有相当成熟的解决方法。不了解问题的上下文,但不建议使用链表这种无法实现O(1)访问的数据结构。如果忽略链表这个数据结构,那么比较容易立刻想到的两种方法:1) 在屏幕空间解决。如朱萌所说,第一步将世界空间内的所有三维点通过一系列矩阵变换转换到屏幕空间,并得到对应的二维屏幕像素坐标。第二步将鼠标点击处屏幕像素坐标与转化所得二维坐标比较。第一步可以完全并行化,第二步可以采用四叉树或kd树把屏幕细分降低复杂度到log(N)。2) 模拟光线追踪过程。第一步将鼠标点选处逆变换到世界坐标P,生成从视点到P的射线。第二步在世界空间内判断射线与各三维点(或以该点为中心的有限平面区域)的相交情况。第二步可利用八叉树或kd树对空间细分降低复杂度至log(N)。
■网友
如果按照问题的那种先映射到2D平面中再做判断,可以考虑用GPU shader加速,这样对于每一个点,通过GPU的并行计算,一下就得到所有点的2D坐标,并且在并行计算过程中,就可以完成最近点的计算。 我想应该会有更简单的方法,但上述是我实现过的方法!
■网友
我是以种幻觉去看很多图都可以在一两秒之内看出,然后由近至远看,远看立体效果更佳。
推荐阅读
- 同比■同比增长7.1%!2021年的第一个节你花了多少钱?
- “他是我第一个会说普通话的老师”:一对师生折射青海山村蝶变
- 有必要重新开个C店吗
- 大学再有三个月就结束了,没学到知识,参加一个软件测试培训机构好吗
- 汽车|长安UNI-K又将开创一个新的"引力"纪元?
- 神话|武汉传奇父亲:一个平行班孩子创造的高考神话(感动上万家长)
- 王者荣耀李白能不能出肉
- 直播会成为品牌传播的另一个途径么有哪些可行的方法感觉有戏又没头绪好捉急。
- 怎样成为一名合格的Python程序员?
- 知乎有没有必要增加一个特别关注功能
