У меня нарисован эллипс вытинутый по горизонтали.
Код для вращения // Установка матриц преобоазования
void Matrix(void)
{
// Мировая матрица
D3DXMATRIX MatrixWorld;
// Матрица вида
D3DXMATRIX MatrixView;
//матрица проекции
D3DXMATRIX MatrixProjection;
// Коэффициент скорости вращения
const float rps = 0.05f;
UINT iTime = GetTickCount();
FLOAT fAngle = iTime * (D3DX_PI * 2 * rps / 1000.0f);
// Вращаем мировую матрицу по оси X
D3DXMatrixRotationX(&MatrixWorld, fAngle);
// Устанавливаем мировую матрицу
pDirect3DDevice->SetTransform(D3DTS_WORLD, &MatrixWorld);
// Изменяем видовую матрицу
D3DXMatrixLookAtLH(&MatrixView, // полученная в итоге видовая матрица
&D3DXVECTOR3(0.0f, 0.0f, 80.0f), // точка, из которой смотрим
&D3DXVECTOR3(0.0f, 0.0f, 0.0f), // куда смотрим
&D3DXVECTOR3(0.0f, 1.0f, 0.0f)); // направление верха
// Устанавливаем видовую матрицу
pDirect3DDevice->SetTransform(D3DTS_VIEW, &MatrixView);
// Изменяем матрицу проекции
D3DXMatrixPerspectiveFovLH(&MatrixProjection, // полученная итоговая матрица проекции
D3DX_PI/3, // поле зрения в направлении оси Y в радианах
1.54f, // соотношения сторон экрана 770/500=1.54
10.0f, // передний план отсечения сцены
200.0f); // задний план отсечения сцены
// Устанавливаем матрицу проекции
pDirect3DDevice->SetTransform(D3DTS_PROJECTION, &MatrixProjection);
}
А вот что происходитЭллипс ложится и обратно переходит в тоже положение, он не делает полный оборот по оси X, а иногда наооборот он из положения лёжа начинает вставать и обратно переходит в положение лёжа, а должен из положения стоя делать полный оборот по оси X.
Помогите пожалуйста разобратся.На всякий случай прикрепляю архив с полным кодом и исполняемым файлом для лучшего понимания.