矢量运算的相关计算

 我来答
录米鸽2350
2016-05-27 · TA获得超过156个赞
知道答主
回答量:187
采纳率:100%
帮助的人:60.3万
展开全部

3D engine中用到的矢量运算详细内容: 2D系统:
Point1(x1,y1),Point2(x2,y2)
距离D=sqr((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2))
3D系统:
Point 1(x1,y1,z1)Point 2 at(x2,y2,z2)。
xd = x2-x1
yd = y2-y1
zd = z2-z1
距离Distance = SquareRoot(xd*xd + yd*yd + zd*zd)
做游戏和demo永远不要去做开方:
1.用LUT查表技术(Look up Table)
2.在做碰撞检测时,误差Distance*Distance<a certain number就可以认为点相撞了斗山 先要说矢量的长度:
矢量Vector(x,y,z)
矢量长度Length(Vector)= |Vector|=sqr(x*x+y*y+z*z)
Normalize后:
(x/Length(Vector),y/Length(Vector),z/Length(Vector))
方向不变,长度为1个单位 是一回事儿。首先明确两个矢量的点积是个标量。
中学物理的力做功就是矢量点积的例子:W=|F|.|S|.cos(theta)
二矢量点积:
Vector1:(x1,y1,z1)Vector2(x2,y2,z2)
DotProduct=x1*x2+y1*y2+z1*z2 1.求二矢量余弦:
由我们最熟悉的力做功:
cos(theta)=F.S/(|F|.|S|)
可以判断二矢量的方向情况: cos=1同向,cos=-1相反,cos=0直角
曲面消隐(Cull face)时判断物体表面是否可见:(法线和视线矢量的方向问题)cos>0不可见,cos<0可见
OpenGL就是这么做的。
2.Lambert定理求光照强度也用点积:
Light=K.I.cos(theta)
K,I为常数,theta是平面法线与入射光线夹角
老王头的Fast Bump(Add Hyper Link here)也就是依据这个数学模型。但是他用了个很Cheap的Hack来模拟cosine 叉乘:Vector1(x1,y1,z1),Vector2(x2,y2,z2):
其结果是个矢量。
方向是Vector1,Vector2构成的平面法线。再使用右手定则
长度是Length(Vector1)*Length(Vector2)*sin(theta)
theta是Vector1 & Vector2的夹角。
所以,平行的矢量叉乘结果为0矢量(长为0,方向任意)
计算结果矢唯销兆量:(指租ox,oy,oz)
ox=(y1 * z2)-(y2 * z1)
oy=(z1 * x2)-(z2 * x1)
oz=(x1 * y2)-(x2 * y1)
用途:计算法向量,这是生成3D图形的很关键一步。

图为信息科技(深圳)有限公司
2021-01-25 广告
边缘计算方案可以咨询图为信息科技(深圳)有限公司了解一下,图为信息科技(深圳)有限公司(简称:图为信息科技)是基于视觉处理的边缘计算方案解决商。作为一家创新企业,多年来始终专注于人工智能领域的发展,致力于为客户提供满意的解决方案。... 点击进入详情页
本回答由图为信息科技(深圳)有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式