在OpenGL中(更具体地说是LWJGL),如果摄影机的面向方向是由向量(0,0,0)定义的,它在哪里面对?
编辑:
所以伙计们,我已经阅读了你的评论和答案,我可以自豪地说,我现在比几个小时前更加开明,多亏了你。我不能真正指出这个问题的正确答案,因为你们所有人都贡献了(在某种程度上),所以你们所有人都要+1!再次感谢。
哦,至于为什么问这个问题?它只是在3D空间中徘徊并思考另一个问题时突然出现在我的脑海中。 :P
答案 0 :(得分:4)
零长度矢量没有方向。
答案 1 :(得分:2)
首先让我们重新考虑实际上产生“方向”之类的东西作为向量空间。矢量可以是任意,数字,方向,椅子,颜色,表格,你可以命名。只要您可以定义线性独立基矢量的矢量空间,它就是一个矢量空间。
所以我们随意介绍一些基本向量,称它们为"right"
,"up"
和"out"
(你也可以使用箭头,或者说很少),也就是说“正确”和“ up“对应于后面屏幕的列和行,”out“是深度缓冲值。这给了我们一个屏幕空间矢量空间。我们现在介绍一些转换,它们从我们称之为“局部空间”的东西转变为“眼睛空间”,从“眼睛空间”转变为“剪辑空间”。我们还说这些转变是同构的。因此,所有这些空间在结构上都是等价的。
你记得基础载体吗?我们现在定义像(a, b, c)
这样的东西实际上是写a "right" + b "up" + c "out"
的捷径。现在请记住,如果可以通过其基矢量的线性组合来表示某些东西,那么它就是矢量空间的一部分。如果将这些基矢量乘以0,它们就会消失。因此,空矢量不是任何特定矢量空间的一部分,但可以用任何矢量空间表示。它也被称为单数。或者换句话说,如果测试向量,如果它不能表示为特定向量空间的一部分,则空向量将适合任何向量空间。
对于方向的向量空间,我们引入了这种方法,对于空向量,没有特定的方向定义,但如果添加到另一个方向,它将不会改变它。
您可能会问“%$ @§如何处理零位置向量?”。好吧,请记住,我们仍然可以使用空向量作为偏移量。我们将一个任意元素定义为我们的原点,然后添加它。
此外,我们必须在0(即乘法消失)和数字“0”之间有所不同,数字“0”可能在评估中匹配为0,但是如果代表数字的位向量的一部分没有消失!
答案 2 :(得分:1)
无处不在。摄像机方向0很可能导致(通过任何计算)到单个视图变换,这应该只是将每个顶点变换为奇点(摄像机位置?)。我自己不会把这样的视图转换称为有效,但也许你有一个非常模糊的应用程序来做这样的事情。