3D服务器端以向量计算为主的角色位置的算法(二)

2014-11-24 07:18:42 · 作者: · 浏览: 4
revCoordinate3D;
// 总路径距离
nAllPathDistance += coordinate3DPath.curDistance;
coordinate3DPath.allDistance = nAllPathDistance;
// 位置计算公式
double nValue = (curCoordinate3D.x-prevCoordinate3D.x)*(curCoordinate3D.x-prevCoordinate3D.x) + (curCoordinate3D.y-prevCoordinate3D.y)*(curCoordinate3D.y-prevCoordinate3D.y)
+ (curCoordinate3D.z-prevCoordinate3D.z)*(curCoordinate3D.z-prevCoordinate3D.z);
if (nValue <= 0)
{
cout << "开根号为0" << endl;
return ;
}
double dValue = sqrt(nValue);
if (0 == dValue)
{
cout << "错误" << endl;
return;
}
coordinate3DPath.xDistance = curCoordinate3D.x-prevCoordinate3D.x;
coordinate3DPath.yDistance = curCoordinate3D.y-prevCoordinate3D.y;
coordinate3DPath.zDistance = curCoordinate3D.z-prevCoordinate3D.z;
coordinate3DPath.dFormula = 1/dValue;
// 间断取path线段中的点,进行格子可行走点的判定。
vtWalkPath.push_back(coordinate3DPath)