Так вы пытаетесь построить солнце или луну?
Если это так, то предполагается, что ваш небесный объект является чем-то вроде сферы, в центре которой (0,0,0).
Вероятно, самый простой способ повернуть его в нужное положение - сделать что-то вроде следующего
D3DXMATRIX matRot;
D3DXMATRIX matTrans;
D3DXMatrixRotationX( &matRot, angle );
D3DXMatrixTranslation( &matTrans, 0.0f, 0.0f, orbitRadius );
D3DXMATRIX matFinal = matTrans * matRot;
Затем установите эту матрицу в качестве матрицы мира.
Что он делает, так это создает матрицу вращения для поворота объекта на «угол» вокруг оси X (то есть в плоскости Y-Z); Затем он создает матрицу, которая выталкивает ее в соответствующее место под углом 0 (orbitRadius может быть лучше в качестве 3-го параметра в вызове перевода, в зависимости от того, где находится ваша нулевая точка). Последняя строка умножает эти 2 матрицы вместе. Матричные умножения не являются коммутативными (т. Е. M1 * M2! = M2 * M1). То, что сделано выше, это перемещение объектов orbitRadius по оси Z, а затем вращение вокруг точки (0, 0, 0). Вы можете думать о вращении объекта, который находится в вашей руке. Если orbitRadius - это расстояние от локтя до руки, то любое вращение вокруг локтя (в 0,0,0) будет образовывать дугу в воздухе.
Я надеюсь, что это поможет, но я действительно рекомендовал бы серьезно заняться чтением по линейной алгебре. Чем больше вы знаете, тем легче будет решить такие вопросы:)