三维空间中两个向量之间的夹角
Angle between two vectors in 3d space
我想在我的游戏中做一些鱼眼筛选。对于列出的要绘制的每个对象,我想检查它是否在相机的挫折中。我是这样做的:
D3DXVECTOR3 cameraPos;
D3DXVECTOR3 pos;
D3DXVECTOR3 cameraVector;//where camera is looking( camera->eye() - camera->pos() )
D3DXVECTOR3 direction = pos - cameraPos;
normalize( &direction );
normalize( &cameraVector );
float dot = cameraVector.x * direction.x + cameraVector.y * direction.y + cameraVector.z * direction.z;
//float cosvalue = cos( dot ); // i was calculatin cos of cos :)
float cosvalue = dot;
float angle = acos (cosvalue) * 180.0f / PI;
if( angle < 45.0f ) draw();
但是我得到奇怪的结果。例如(angle <50°f)到处画,但没有我想要的地方,所以鱼眼是空的。!(角& lt;我想画什么就画什么。但是(角<40)什么也画不出来:(我不知道,如果这是我的角度计算或它的浮动问题:(有人吗?
dot_product = a.x * b.x + a.y * b.y + a.z * b.z = a.len() * b.len * cos(angle)
:
cos(angle) = dot_product / (a.len * b.len)
你的代码做了一件奇怪的事情:你实际上是在计算点积的余弦值!
相关文章:
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 在C++中查找两个向量之间最相似的值
- C++在 2 个向量向量之间交换向量
- p_threads初始化中向量和数组之间的区别
- 查找多个向量之间的公共元素(无整数元素)
- 在两个类实例之间共享向量
- C++向量:clear() 和 resize() 之间的区别
- 由 std::shared_ptr 向量指向的数据之间的线程同步
- C++ std::vector 创建对象然后添加对象与在向量中创建对象之间的区别?
- C 计算两个3D向量之间的角度(0至360)
- 在C 中,是否有可能在不兼容类型的std ::向量对象之间传输不同类型的缓冲区
- C++:快速/并行计算两个"std::vector<double>"向量之间的L1距离
- 计算三个或更多向量之间的向量
- 如何在C++中找到两个向量之间的最小(优化)距离
- 列表和向量的索引之间的差异
- 如何在指定数据之间将数据从一个向量获取到另一个向量
- 编译器如何在向量vs Initializer_list之间做出决定
- 字符串和向量<string>元素之间的区别
- 在两个std::向量之间匹配元素
- 用整数密钥和向量的地图之间的差异