2011-11-29 51 views
2

在OpenGL(更具体的LWJGL)中,如果摄像机的朝向由矢量(0,0,0)定义,它在哪里面对?矢量(0,0,0)面朝什么方向?

编辑:

所以,球员,我读过您的意见和答案,我可以自豪地说,我更开明现在比我几个小时前,多亏了你。我无法指出这个问题的一个正确答案,因为你们所有人都以某种方式做出了贡献,所以对你们大家+1!再次感谢。

哦,至于为什么问这个问题?它在我的脑海中浮现,并在三维空间中游荡,并思考另一个问题。 :P

+4

恩,它不会面对任何地方?编辑:好奇,为什么这个问题? – Bart

+0

我会说它一次面向每个方向。 –

回答

4

零长度矢量没有方向。

+2

......或[显然](http://en.wikipedia.org/wiki/Null_vector)任意方向。 – Bart

1

无处不在。 0的摄像机方向很可能导致(通过任何计算)到奇异视图变换,这应该只是将每个顶点变换成奇点(摄像机位置?)。我自己不会称这种视图转换是有效的,但也许你有这样一个非常模糊的应用程序。

2

首先让我们重新考虑一下实际上像“向量”这样的东西是如何生成矢量空间的。矢量可以是任意的,数字,方向,椅子,颜色,表格,你的名字。只要您可以定义线性独立基向量的向量空间,它就是一个向量空间。

所以我们随意介绍一些基本的载体,给他们打电话"right""up""out"(你也可以使用箭头,或一点名堂),也有人说,“右”和“向上”对应出来以后屏幕的行和列而“out”是深度缓冲值。这给了我们一个屏幕空间矢量空间。我们现在介绍一些转换,它们从我们称之为“局部空间”到“眼睛空间”,从“眼睛空间”转变为“剪辑空间”。我们也说这些转变是同构的。因此,所有这些空间在结构上是等效的。

你还记得基本向量吗?我们现在定义类似(a, b, c)的东西实际上是编写a "right" + b "up" + c "out"的捷径。现在请记住,如果一个向量空间可以由其基向量的线性组合来表示,那么它就是向量空间的一部分。如果你将这些基本向量乘以0,它们就会消失。所以一个零向量不是任何特定向量空间的一部分,但可以用任何向量空间表示。它也被认为是单数。或换句话说,如果你测试一个矢量,如果它不能被表示为特定矢量空间的一部分,则空矢量将适合任何矢量空间。

在我们引入的方向矢量空间的情况下,这意味着对于空矢量,没有定义特别的方向,但是如果添加到另一方向则不会改变它。

您可能会问“%$ @§如何做一个零位向量工作?”。那么请记住,我们仍然可以使用空向量作为偏移量。我们定义一个任意元素作为我们的起源,并添加到它。

此外,我们必须在0(即乘法消失)和数字“0”之间有所不同,它可以在评估中与0匹配,但是如果表示数字的位向量的一部分不会消失!