Я пытаюсь повернуть трехмерный объект вокруг своей оси Z (вверх / вниз).
public void RotateY(float angle)
{
foreach (CoordinateVertices cv in this.GetAll<CoordinateVertices>())
{
for (int i = 0; i < cv.Coordinates.Length; i++)
{
Vector3 old = cv.Coordinates[i];
float theta = Math.Atan2(old.Y, old.X) + angle;
float rayon = Math.Sqrt(Math.Pow(old.X, 2) + Math.Pow(old.Y, 2));
cv.Coordinates[i] = new Vector3(Math.Cos(theta) * rayon, Math.Sin(theta) * rayon, old.Z);
}
}
}
Тригонометрия довольно проста и, кажется, работает нормально, но по какой-то причине мой 3D-объект разрезается пополам.

Кто-нибудь имеет представление о том, что происходит? Я написал бы это в математике StackExchange, но это может быть проблемой и с моим программированием, и тригонометрия действительно проста.