首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

为啥小弟我将一个Vector3旋转之后再反向旋转同样角度,得到的数值却不一样

2012-05-24 
为啥我将一个Vector3旋转之后再反向旋转同样角度,得到的数值却不一样?C# codefloat Angle 90//角度值Ve

为啥我将一个Vector3旋转之后再反向旋转同样角度,得到的数值却不一样?

C# code
            float Angle = 90;//角度值            Vector3 V = new Vector3(100, 0, 0);            Matrix M1 = Matrix.RotationZ((float)(Math.PI * Angle) / 180);            Vector3 V1 = Vector3.TransformNormal(V, M1);            Matrix M2 = Matrix.Invert(M1);            Vector3 V2 = Vector3.TransformNormal(V1, M2);            if (V == V2)            {                MessageBox.Show("True");            }            else            {                MessageBox.Show("False");            }


除了45及其倍数的角度是True,其他的角度都传回False,请问有啥方法能将使其在所有角度都返回True。


[解决办法]
应该属于float/double精度问题吧,类似0.3333f不等于1.0f/3;
估计里面用了类似tan()的函数,只有在特殊角度,比如45度时,tan()结果为1,不会出现精度误差...

可以考虑自己写允许一定的误差的比较函数,而不是直接用Vector3的比较。

热点排行