游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2349|回复: 2

如何鼠标拾取三维空间中的线条和点

[复制链接]

2

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2008-12-11 18:00:00 | 显示全部楼层 |阅读模式
在D3D下,网上很多关于鼠标拾取指定模型的代码,该方法是用构造一条射线碰撞网格,这种方法的缺点是当拾取的物体是线条或者点时,将会很难拾取.避免这个缺陷的方法是用指定一个屏幕矩形去碰撞网格,这样就允许有一定的碰撞范围,对于点和线都很有效,但这种方法涉及空间裁剪,较为复杂,不知道哪位大侠有没相关资料指点一下迷津,感谢一下先~~

1

主题

51

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2008-12-16 09:37:00 | 显示全部楼层

Re:如何鼠标拾取三维空间中的线条和点

求距离,距离小于一个阀值就认为相交了

1

主题

51

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2008-12-16 09:45:00 | 显示全部楼层

Re:如何鼠标拾取三维空间中的线条和点

直线方程(t)=P+t*D.D是向量
求点Q到L的最小距离公式:
t0 = (D dot (Q - P)) / (D dot D)

即L上到Q最近的点T,线段QT垂直于L
T = L(t0)

这个公式也能用于求点到射线和线段的距离
对于射线L,其参数方程表示为
L(t)=P+t*D ,其中t >= 0
对于线段,其参数方程为
L(t)=P+t*D ,其中t在[0,1]之间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 17:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表