首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这边用的数学知识,求高手科普了

2013-04-26 
这里用的数学知识,求高手科普了这里 我们定义 P0(-1,-1,0) P1(1,-1,0) P2(1,-1,1) P3(-1,-1,1) P4(-1

这里用的数学知识,求高手科普了
这里 我们定义 P0=(-1,-1,0) P1=(1,-1,0) P2=(1,-1,1) P3=(-1,-1,1) P4=(-1,1,0) P5=(1,1,0) P6=(1,1,1) P7=(-1,1,1) 我们通过这8个点构建6个面,通过3点共面,假设面是Pos0,pos1,pos2构成,u=Pos1-Pos0,v=Pos2-Pos0,那么法向量n=u×v。则d=-(n×Pos0)。得到每个平面的平面公式n,d,从而得到A,B,C,D,(n的xn,yn,zn,d,就是a,b,c,d)。

Near: (P0,P4,P5) n=(0,0,-1),d=0 0x+0y-1z+0=0 
Far: (P2,P6,P7) n=(0,0,1),d=-1 0x+0y+1z-1=0 
Left: (P0,P3,P7) n=(-1,0,0),d=-1 -1x+0y+0z-1=0 
Right: (P1,P5,P6) n=(1,0,0),d=-1 1x+0y+0z-1=0 
Top: (P4,P7,P6) n=(0,1,0),d=-1 0x+1y+0z-1=0 
Bottom: (P0,P1,P2) n=(0,-1,0),d=-1 0x-1y+0z-1=0 


_______________________________________________ 分割线

我随便取个(P0,P1,P2) n=(0,-1,0),d=-1 0x-1y+0z-1=0 
我不明白,这个n=(0,-1,0)是怎么计算出来的?
按照他的计算方式。u=Pos1-Pos0,v=Pos2-Pos0 
应该是u=p1(1,-1,0)-p0(-1,-1,0) v=p2(1,-1,1)-p0(-1,-1,0)。
n应该等于(2,0,0)×(2,0,1) = (4,0,0)才对啊怎么会变成 n=(0,-1,0)?

求老师们指点
[解决办法]
x 表示差积 http://en.wikipedia.org/wiki/Cross_product,你当 . 积算了 http://en.wikipedia.org/wiki/Dot_product,可不是错吗。
[解决办法]
你最好读读那个 wiki,或者差积相关的资料,就 csdn 这编辑器,什么数学公式也写不了,没法儿在这里解释。
[解决办法]
(2,0,0)×(2,0,1) = (4,0,0)
///////////////////////////

汗,你应该先了解下向量的乘法
[解决办法]
你的减法没错,就是 #4 挑的那句差积算错了,老老实实看书吧,求人不如求己。
[解决办法]

引用:
引用:你的减法没错,就是 #4 挑的那句差积算错了,老老实实看书吧,求人不如求己。

谢谢哥了,我看了叉积相关的知识了。但是对这里的六个面还是有点不太明白。
直接取p0,p1,p2,p3四个点组成一个四边形不就好了么,搞那么多的运算干嘛呢。。

三个点可以确定一个平面,4个点不一定能。d=-1 0x-1y+0z-1=0 就是平面方程
[解决办法]
引用:
这里 我们定义 P0=(-1,-1,0) P1=(1,-1,0) P2=(1,-1,1) P3=(-1,-1,1) P4=(-1,1,0) P5=(1,1,0) P6=(1,1,1) P7=(-1,1,1) 我们通过这8个点构建6个面,通过3点共面,假设面是Pos0,pos1,pos2构成,u=Pos1-Pos0,v=Pos2-Pos0,那么法向量n=u×v。则d=-(n……


u = (2,0,0)
v = (2,0,1)
到这一步,楼主算得是对的。但n = u x v这一步就错了。你那样算的是u.v(点乘),而不是uxv(差乘)。
如果你熟悉行列式,差乘的算法很简单,比如以这个计算为例:
i  j  k
2  0  0
2  0  1
这个行列式的结果等于:
(i*0*1 - 0*0*i) - (2*1*j - 0*2*j) + (2*0*k - 0*2*k)
= (0 - 0)*i - (2 - 0)*j + (0 - 0)*k
= 0*i - 2*j + 0*k
=(0, -2, 0)
归一化处理(就是让最大那个元素的绝对值为1,因为法向量仅关注向量的方向)后就得到
(0, -1, 0)
所以n = (0, -1, 0)
[解决办法]
引用:
引用:你的减法没错,就是 #4 挑的那句差积算错了,老老实实看书吧,求人不如求己。

谢谢哥了,我看了叉积相关的知识了。但是对这里的六个面还是有点不太明白。
直接取p0,p1,p2,p3四个点组成一个四边形不就好了么,搞那么多的运算干嘛呢。。


楼主学过立体几何么?如果没有,这样的题目就不适合你做,等以后上了高中,学过立体几何后再做这样的题目吧。
[解决办法]
引用:
引用:你的减法没错,就是 #4 挑的那句差积算错了,老老实实看书吧,求人不如求己。


谢谢哥了,我看了叉积相关的知识了。但是对这里的六个面还是有点不太明白。
直接取p0,p1,p2,p3四个点组成一个四边形不就好了么,搞那么多的运算干嘛呢。。


我也不知道你为什么需要六个平面,看起来你要用八个顶点构造一个正方体,不过你自己要干嘛应该你最清楚啊。

热点排行