Как определить пределы преобразований объектов

#graphics #3d #linear-algebra #transformation #vector-graphics

Вопрос:

Предположим, например, что у нас есть кубическая кривая Безье в ограниченном декартовом пространстве, где x колеблется от 0 до 500, а y колеблется от 0 до 300:

введите описание изображения здесь

И я хочу манипулировать этой кривой с помощью матриц масштаба, поворота и преобразования, с ограничениями, которые я не хочу, чтобы какая-либо точка на этой кривой выходила за пределы сетки 500×300.

Учитывая эту кривую, есть ли способ априори вычислить (отредактировать: т. Е. спрогнозировать) пределы параметров масштаба, поворота и трансляции, чтобы результирующие преобразования кривой никогда не заставили ее выйти за пределы этой сетки?

Ответ №1:

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

инжир

Комментарии:

1. Это определенно упростило бы ситуацию. Но есть ли способ эффективно вычислить, когда коробка выйдет за пределы диапазона, не применяя преобразования методом грубой силы?

2. Вам нужно всего лишь отследить 4 точки, чтобы увидеть, какая из них может выйти за рамки. Это будет эффективно. Каждая точка представляет собой матрично-векторное произведение для вычисления.