计算偏航/俯仰并考虑180 / -180翻转?

时间:2016-08-06 02:06:07

标签: java rotation logic trigonometry minecraft-forge

我正在尝试在Minecraft中创建一个类似蠕虫的实体。它非常长,因此需要分解成多个部分

每个部分都遵循先前的9> 8> 7> 6> 5> 4> 3> 2> 1> 0

0是蠕虫的头部

每个部分都使用trig来根据它所遵循的部分的位置和旋转来找到放置/旋转自身的位置

_Alignof

我遇到的问题是当头部旋转到180°-180°时,它会翻转到另一个或另一个。我在日志中打印出偏航以显示发生了什么

    public void pseudoChild(Entity parent, float length, Entity child) {

    float parentYaw = (parent.rotationYaw + 90) * 0.0174533F;
    float parentPitch = (parent.rotationPitch) * 0.0174533F;

    double x = ((length * MathHelper.cos(parentPitch) * MathHelper.cos(parentYaw)) + parent.posX);
    double y = ((length * MathHelper.sin(parentPitch)) + parent.posY);
    double z = (length * MathHelper.cos(parentPitch) * MathHelper.sin(parentYaw)) + parent.posZ;

    float yaw = child.rotationYaw + ((parent.rotationYaw - child.rotationYaw) * 0.1F);
    float pitch = child.rotationPitch + ((parent.rotationPitch - child.rotationPitch) * 0.1F);

    child.setLocationAndAngles(x, y, z, yaw, pitch);
}

根据旋转方向,这会导致身体部分从正向短暂旋转360度或反之亦然。

这种现象的视频 https://youtu.be/8PYXfl3101k

我不知道如何解决这个问题而不使用我自己的自定义浮点数进行俯仰和偏航并放弃使用Minecraft变量,因为它们突然在180 / -180处翻转

感谢任何帮助。

谢谢

0 个答案:

没有答案