Решения задачи с Ulearn

Практика «Визуализация»

В том же проекте доработайте файл VisualizerTask.cs, чтобы заработала визуализация.

  1. В методе KeyDown сделайте так манипулятор реагировал на клавиши QASW таким образом:
    • по Q увеличивает угол Shoulder на небольшую величину, а по A — уменьшает;
    • по W увеличивает угол Elbow на небольшую величину, а по S — уменьшает;
    • при любых изменениях пересчитывает бы Wrist по формуле Wrist = — Alpha — Shoulder — Elbow;
  2. В методе MouseMove менял бы X и Y в соответствии со значением из события. Имейте в виду, что ось Y в окне направлена вниз, а в математике — вверх. Поэтому координаты мыши нужно преобразовывать из оконной системы координат в логическую, а при отрисовке наоборот. X и Y в итоге должны хранить логические координаты указателя мыши, относительно shoulderPos — координат единственного неподвижного сустава. Преобразовать оконные координаты в логические и наоборот можно с помощью пары готовых функций ConvertMathToWindow и ConvertWindowToMath.
  3. В методе MouseWheel добавить обработку прокрутки колеса мыши. Оно должно менять Alpha.
  4. В методе UpdateManipulator вызвать ManipulatorTask.MoveManipulatorTo и обновить значения Shoulder, Elbow и Wrist (это понадобится в последней задаче). UpdateManipulator нужно вызывать после каждого изменения X, Y или Alpha, то есть в методах MouseMove и MouseWheel.
  5. В методе DrawManipulator допишите рисование манипулятора. Нарисуйте каждый сегмент манипулятора отрезком прямой, а каждый сустав — окружностью. Координаты сустава получите методом AnglesToCoordinatesTask.GetJointPositions. Не забудьте преобразовать логические координаты в оконные.

При запуске проекта в результате вы сможете управлять углами сгиба суставов манипулятора с помощью клавиатуры. А после выполнения следующих заданий, манипулятор должен будет следовать за курсором мыши.

Стоимость решения этой задачи всего 100 рублей, купи решения у меня 🙂

Обновлено: 25.11.2018 — 12:28

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.