Как изменить размер квадрата потянув за его ребро мышкой - C#

Узнай цену своей работы

Формулировка задачи:

Всем добрый день. Пишу для своего движка небольшой 3д редактор уровней (базовый функционал) на подобии Valve Hammer. Так вот, в чем проблема? Проблема в том что у меня не получается нормально реализовать изменения размеров браша. А именно когда я рисую с верхнего левого угла в правый нижний (и не только), то вершины отзеркаливаються и перетаскиваются тогда противоположные. Как это справить? Я пытался это профиксить, но все идеи которые ко мне приходили не помогали Вот здесь я хочу увеличить правую сторону, но оно изменяет левую (движется в сторону курсора) Помогите решить эту проблему

Решение задачи: «Как изменить размер квадрата потянув за его ребро мышкой»

textual
Листинг программы
  1.  protected void InitBrush( Vector3f StartPosition, Vector3f EndPosition )
  2.         {
  3.             if ( StartPosition.X == 0 )
  4.                 StartPosition.X = Viewport.fSize;
  5.  
  6.             if ( StartPosition.Y == 0 )
  7.                 StartPosition.Y = Viewport.fSize;
  8.  
  9.             if ( StartPosition.Z == 0 )
  10.                 StartPosition.Z = Viewport.fSize;
  11.  
  12.             Position = Program.Align( StartPosition, Viewport.fSize );
  13.             EndPosition = Program.Align( EndPosition, Viewport.fSize );
  14.  
  15.             Size.X = EndPosition.X - Position.X;
  16.             Size.Y = EndPosition.Y - Position.Y;
  17.             Size.Z = EndPosition.Z - Position.Z;
  18.  
  19.             if ( Size.X < 0 )
  20.             {
  21.                 Position.X = EndPosition.X;
  22.                 Size.X = Program.Align( Math.Abs( Size.X ), Viewport.fSize );
  23.             }
  24.  
  25.             if ( Size.Y < 0 )
  26.             {
  27.                 Position.Y = EndPosition.Y;
  28.                 Size.Y = Program.Align( Math.Abs( Size.Y ), Viewport.fSize );
  29.             }
  30.  
  31.             if ( Size.Z < 0 )
  32.             {
  33.                 Position.Z = EndPosition.Z;
  34.                 Size.Z = Program.Align( Math.Abs( Size.Z ), Viewport.fSize );
  35.             }
  36.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы