位置: 编程技术 - 正文
推荐整理分享向量的倒影 公式推导(向量上面有个倒着的v),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:向量反过来坐标怎么变,向量的倒影 公式是什么,向量的倒影 公式怎么算,向量的倒影 公式怎么算,向量的倒置,向量的倒影 公式怎么求,向量的倒影 公式怎么算,向量的倒影公式,内容如对您有帮助,希望把文章链接给更多的朋友!
这几天在处理3D倒影的时候,遇到了如何生成倒影的问题,经过一番查找,找到了一篇关于如何生成倒影的文章,讲解得比较详细,转载下来,供大家学习参考。
Reflecting a Vector Jan ,
This is a mainly math tutorial, but don't worry, they won't all be math. It might not be immediately and directly useful, but having an understanding of 3D Math is something that is near essential to many types of modern game programming, and also something not likely to go out of date when new technology comes out. The scenario I'll use for this example is that the player has thrown a grenade, and you want it to bounce off any object that it hits. It should be pretty easy to just look up a formula, but let's try working it out ourselves. First I'll define what we know already:V - Velocity VectorN - The Normal Vector of the plane the grenade has struck.What we need to figure out is:R - The new vector after reflecting velocity in N.Here's a diagram showing these vectors. It's a 2D diagram with Vector N aligned to an axis to make it easier to understand what I'm doing( and easier for me to draw.) However we want to solve the general problem for any 3D vectors.Remember that the dot product, which returns a scalar value, can be used in projecting a vector onto another axis. (I should point out that the vector N here is a unit vector.) To project V onto N, the formula is (V dot N)*N.I worked this out on paper using relationships. In the diagram to the left I centered all the vectors on the origin, except the green ones, because those I'm adding together to try to get R.The actual formula for reflecting a vector then is:R = 2*(V dot N)*N - VNow this isn't just reflecting the velocity, it's a bounce, so we actually want -R. We need to negate the formula, giving us:
Vnew = -2*(V dot N)*N VYou can look the bounce formula this way: (V dot N)*N is the movement towards the plane along the plane normal, subtract it once and V is parallel with the plane, twice and it has bounced off the plane.Also, when an object bounces some of its speed is lost (how much depends on the object itself and what it hits.) We'll call this value b where b=0.0 means no bounce, and b=1.0 means no loss of speed. So for the final formula, this is what he have:
Vnew = b * ( -2*(V dot N)*N V )OpenGL入门一 说起编程作图,大概还有很多人想起TC的#includegraphics.h吧?但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的*分辨率、1
OpenGL入门二 本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念。一、点、直线和多边形我们知道数学(具体的说,是几何学)中
OpenGL编程逐步深入(九)插值处理 注:文中VS代指顶点着色器,FS代指片段着色器。准备知识这个教程和大家展示3d管道中非常重要的部分,即Interpolation(插值)。光栅化程序执行的插值
标签: 向量上面有个倒着的v
本文链接地址:https://www.jiuchutong.com/biancheng/369586.html 转载请保留说明!友情链接: 武汉网站建设