绕 2 轴旋转对象时出现问题(C#)

问题描述 投票:0回答:1

我这里有一些 C# 代码,它可以围绕玩家旋转相机

BasePosition 是用于计算的相机位置,CoreCamera 是相机,The Anchor 是锚点

CoreCamera.Position.X = (float)(Math.Cos(Theta) * (BasePosition.X - Anchor.X) - Math.Sin(Theta) * (BasePosition.Z - Anchor.Z) + Anchor.X);
CoreCamera.Position.Z = (float)(Math.Sin(Theta) * (BasePosition.X - Anchor.X) + Math.Cos(Theta) * (BasePosition.Z - Anchor.Z) + Anchor.Z);
        
CoreCamera.Position.Z = (float)(Math.Cos(Phi) * (BasePosition.Z - Anchor.Z) - Math.Sin(Phi) * (BasePosition.Y - Anchor.Y) + Anchor.Z);
CoreCamera.Position.Y = (float)(Math.Sin(Phi) * (BasePosition.Z - Anchor.Z) + Math.Cos(Phi) * (BasePosition.Y - Anchor.Y) + Anchor.Y);

旋转是独立工作的,所以数学不是问题,主要是当我同时进行 x 和 y 旋转时

它似乎只是执行我指定的最后一个旋转,而不是两者都旋转,我的主要目标是沿两个轴旋转相机

我该如何实现这一目标?

我尝试寻找解决方案,但他们正在使用使用旋转矩阵的代码,而我没有使用它。我宁愿修复这段代码,也不愿编写全新的代码

请帮忙,而不是否决

c# math 3d rotation
1个回答
0
投票

这是一个简单的编程问题。

注意价值观的来源。您的两次旋转都使用

BasePosition

第二个应该使用

CoreCamera.Position

© www.soinside.com 2019 - 2024. All rights reserved.