Для плоскости с матрицей, которая и переводит ее, и масштабирует ее, у меня есть оверлейная точка, которая может только переводить, но не масштабироваться и должна оставаться в одной точке плоскости. Если плоскость переводится с использованием следующего преобразования, например:
matrix(1,0,0,1,33,33);
Я могу просто совместить это с точки зрения.
Но если матрица выглядит так:
matrix(1.5,0,0,1.5,33,33);
Я не могу просто сопоставить его, потому что размер точки будет масштабироваться.
Как найти перевод, который будет перемещать точку в соответствии с плоскостью без масштабирования точки? Извините, если это кажется очевидным, я немного математически оспаривается.
Точка не имеет размера, это просто позиция. Масштаб + поворот - это преобразование между координатами, поэтому масштабирование на самом деле является масштабированием расстояний до начала координат, а не самого объекта. Для прямоугольника это означает применение преобразования к каждому углу. Для точки это означает применение (цельного) преобразования к точке.
Что заставляет вас думать, что этот вопрос будет масштабироваться?
Если вы просто хотите применить преобразование вращения, а не преобразование масштабирования, то при условии, что ваше определение матрицы является матрицей CSS (https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function), то список - это a, b, c, d, tx, ty. Вращение задается как
[cos(a) -sin(a) sin(a) cos(a) 0 0]
Поэтому, если вы используете пару a, b и c, d, вы можете нормализовать вычисление угла поворота самостоятельно без масштабирования.