Мне нужно масштабировать объект в едином масштабе на определенной точке, используя (x, y) умножение, такое как объяснение здесь:
http://www.willamette.edu/~gorr/classes/GeneralGraphics/Transforms/transforms2d.htm#Combining
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь масштабировать объект с некоторым коэффициентом (равным для X и Y), объект получает определенное значение справа. Я хотел бы предотвратить это, и я понимаю, что решение этой проблемы заключалось бы в том, чтобы вычесть значение из (X, Y) до фактического масштабирования объекта, но я не могу найти правильное значение. В учебнике выше это объясняется так:
Мы видели, что основные масштабирующие и вращательные преобразования всегда относятся к началу координат. Чтобы масштабировать или вращать вокруг определенной точки (неподвижной точки), мы должны сначала перевести объект так, чтобы неподвижная точка находилась в начале координат. Затем мы выполняем масштабирование или поворот, а затем инвертируем исходный перевод, чтобы переместить неподвижную точку обратно в исходное положение. Например, если мы хотим масштабировать треугольник на 2 в каждом направлении вокруг точки fp = (1.5,1), мы сначала переведем все точки треугольника на T = (-1.5, -1), масштаб на 2 (S), а затем перевести обратно на -T = (1.5,1). Математически это выглядит
Что означает "происхождение"? Означает ли это (0,0), и если да, то умножение не умножилось бы на ноль и не получило бы никакого результата? Это не имеет никакого смысла, почему я подозреваю, что я должен принять этот номер что я вычитаю только из одного действия.
Заранее спасибо.
EDIT: Это ответ на вопрос, объясненный для любого человека, который мог бы, возможно, искать его в будущем, так как я не нашел удовлетворительного объяснения в Интернете (исключая возможные из них, которые я не нашел даже через то, что я искал достаточно )
Поэтому, если вы хотите масштабировать в точке (X, Y), скажите, что она (X = 10, Y = 15) с коэффициентом шкалы 10, вы должны выполнить следующие шаги: 1) Найти центр плоскости, где объекты в настоящее время расположены. В нашем случае это будет точка (10,15). 2) Для каждого объекта, который вы применяете масштабирование, чтобы вычесть значение X центральной точки из точки объекта X, а также для Y (я использую центральную точку, потому что я хочу, чтобы она была единой шкалой). 3) Умножьте результат операции на масштабный коэффициент (в нашем случае 10).
Значение, которое вы хотите вычесть из всех координат перед масштабированием, является точкой вашего объекта, которую вы не хотите перемещать с помощью операции масштабирования. Как правило, это центральная точка, если это применимо. Вычитая центральную точку, она становится сопоставленной для координат начала координат и поэтому не зависит от масштабирования.
Все остальные точки вашего объекта все еще перемещаются, потому что они отображаются в точках, отличных от (0,0).
Да, начало координат - это (0,0) точка системы координат. Но почему это приведет к умножению на 0?
Сначала вы перемещаете (переводите) объект так, чтобы он находился в центре системы координат. Затем вы масштабируете его с коэффициентом, а затем перемещаете обратно туда, где он был первоначально.
Если вы хотите выполнить операцию, описанную в вашей цитате, то для каждой точки объекта вы сначала переводите ее на T (где T - это точка, вокруг которой вы хотите масштабировать), то вы умножаете каждый компонент результата на соответствующее масштабирование фактор S. Затем вы переместите новую точку обратно с помощью -T.