我是否正确地将局部空间转换为世界空间坐标
Am I converting local space to world space coordinates properly?
我正在尝试创建一个骨骼和IK系统。以下是递归方法,用于计算每块骨骼的绝对位置和绝对角度。我用根骨和零参数来命名它。它工作得很好,但当我尝试使用CCD IK时,我会得到结果终点和计算终点之间的差异。因此,也许我做错了,尽管它有效。
感谢
void Skeleton::_updateBones( Bone* root,float realStartX, float realStartY, float realStartAngle )
{
if(!root->isRelative())
{
realStartX = 0.0f;
realStartY = 0.0f;
realStartAngle = 0.0f;
}
realStartX += root->getX();
realStartY += root->getY();
realStartAngle += root->getAngle();
float vecX = sin(realStartAngle);
float vecY = cos(realStartAngle);
realStartX += (vecX * root->getLength());
realStartY += (vecY * root->getLength());
root->setFrame(realStartX,realStartY,realStartAngle);
float angle = fmod(realStartAngle,2.0f * 3.141592f);
if( angle < -3.141592f )
angle += (2.0f * 3.141592);
else if( angle > 3.141592f )
angle -= (2.0f * 3.141592f);
for(std::list<Bone>::iterator it = root->begin(); it != root->end(); ++it)
{
_updateBones(&(*it),realStartX,realStartY,angle);
}
}
这看起来不对。
float vecX = sin(realStartAngle);
float vecY = cos(realStartAngle);
交换sin()
和cos()
。
float vecX = cos(realStartAngle);
float vecY = sin(realStartAngle);
相关文章:
- 为什么 openmp 的并行不适用于矢量化色彩空间转换?
- 如何将我的类转换为命名空间
- 命名空间从VS 2017转换为2012年
- 将typeID转换为静态成员访问(C )的命名空间
- 将鼠标坐标转换为世界空间坐标
- OpenCv,Android:无法编辑转换为HLS色彩空间的相机帧像素
- 使用特征元将转换矩阵从世界空间转换为相机空间
- 在将平截头体从摄影机空间转换为灯光空间以进行阴影映射方面存在主要问题
- 将欧几里得转换为C 和OpenCV中的均匀空间
- 正在将shared_ptr转换为不同命名空间中相同类型的shared_ptr
- 如何在监视窗口中转换为未命名命名空间中的类型
- 使用名称空间将C++转换为HTML
- 在“顶点着色器”中将法线转换为视图空间
- 生成用于sRGB到CIELAB色彩空间转换的3DLUT(.3dl文件)
- 避免颜色空间转换时,比特,Mac OS X 10.11 SDK
- 如何为命名空间和扩展类转换c#到Qt小部件代码(c++)
- 用于计算色差(delta E)和颜色空间转换的C/ c++库
- Direct3D11包含色彩空间转换吗?
- 将中的可用空间转换为Windows C++的百分比
- 我是否正确地将局部空间转换为世界空间坐标