Вращение объекта вокруг фиксированной точки, рассчитанной по положению щелчка мыши.C#

Место общения программистов C#
Ответить
Anonymous
 Вращение объекта вокруг фиксированной точки, рассчитанной по положению щелчка мыши.

Сообщение Anonymous »

Моя модель продолжает прыгать по экрану монитора после следующих действий:
  • Выберите точку.
  • Поверните.
  • Выберите другую точку.
Интересно, что-то не так с моими преобразованиями.
Вот вот как это выглядит:
Видео
Я пытался следовать порядку: Перевести(x,y,z) -> Повернуть -> Перевести(-x,-y,- z)
Вот код
GL.MatrixMode(MatrixMode.Modelview);
GL.Translate(transX, transY, 0);

GL.PushMatrix();
if (rotatePoint != null)
{
// Draw clicked point
GL.PointSize(30);
GL.Begin(PrimitiveType.Points);
GL.Color3(1.0, 0.0, 0.0);
GL.Vertex3(rotatePoint.point.X, rotatePoint.point.Y, rotatePoint.point.Z);
GL.End();

// Translate to the rotatePoint
GL.Translate(rotatePoint.point.X, rotatePoint.point.Y, rotatePoint.point.Z);

GL.Rotate(angleY, 1, 0, 0);
GL.Rotate(-angleX, 0, 1, 0);

// Translate back
GL.Translate(-rotatePoint.point.X, -rotatePoint.point.Y, -rotatePoint.point.Z);
}

SetupViewport();
pco.Render(point_size, ShowOctreeOutline, PointCloudColor, mFrustum);
GL.PopMatrix();

SetupViewport:
int w = glControl1.ClientSize.Width;
int h = glControl1.ClientSize.Height;
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
float aspect = w / (float)h;
float n = scaling;
float left = -n * 0.5f, right = n * 0.5f, down = -n * 0.5f / aspect, up = n * 0.5f / aspect;
if (w

Подробнее здесь: https://stackoverflow.com/questions/787 ... k-position
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»