BSP tree
来源:互联网 发布:学哪种编程语言好 编辑:程序博客网 时间:2024/05/14 19:06
解释BSP树的运用,最好是从一个例子开始.设想一个很简单的DOOM关卡的例子.
这个关卡由一个屋子套在另一个屋子里构成.玩家被封闭在矩形ABHG中.
先给出几个定义.(如图)
我们用矢量定义直线,所以
a = (A,B) e = (E,C) f = (C,D) g = (F,D)
当一个点在直线矢量方向的左边时,我们称点在直线的左边.
因此,在这个例子里,a的左边什么也没有;所有的东东都在它的右边.注意这些
依赖与我们对a的定义,如果我们定义 a = (B,A) 则所有的东东都在a的左边.
面是玩家看到的直线的一边.例如墙e,就有两个面(e'和e").不是所有的墙都有
两个面 -- 如果玩家只能看见墙的一面,那么这堵墙就只有一个面.
面是由矢量方向定义的,直线的两个面分别被称作左表面和右表面.
这个例子中的BSP树是这样的:
f
/ \
/ \
/ \
a,d1,b1 e
/ \
/ \
/ \
d2,c1 g
/ \
先给出几个定义.(如图)
我们用矢量定义直线,所以
当一个点在直线矢量方向的左边时,我们称点在直线的左边.
因此,在这个例子里,a的左边什么也没有;所有的东东都在它的右边.注意这些
依赖与我们对a的定义,如果我们定义 a = (B,A) 则所有的东东都在a的左边.
面是玩家看到的直线的一边.例如墙e,就有两个面(e'和e").不是所有的墙都有
两个面 -- 如果玩家只能看见墙的一面,那么这堵墙就只有一个面.
面是由矢量方向定义的,直线的两个面分别被称作左表面和右表面.
这个例子中的BSP树是这样的: