c++ - 我是否正确地将局部空间转换为世界空间坐标?

标签 c++ algorithm coordinates

我正在尝试创建骨骼和 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);

关于c++ - 我是否正确地将局部空间转换为世界空间坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6230288/

相关文章:

c++ - 如何在可变参数模板类中获取函数指针的参数类型?

c++ - 友元函数返回对私有(private)数据成员的引用

c++ - 从指针基抽象类调用非虚拟子类方法

c++ - 多个 std::atomic<T> 条件

android - 在android中点击 map 获取坐标

将轮廓转换为二维 bool 数组的算法

c++ - 从二叉搜索树中删除节点

python - 评估列表 : AvgP@K and R@K are they same?

iphone - GPS 坐标(以度为单位)来计算距离

python - 程序无法识别 y 值 < 总高度的三分之一