(dx, dy) = ((originalWidth- (originalWidth X scale)) / 2, (originalWidth - (originalHeight X scale)) / 2)
В основном да, ноу вас есть опечатка копирования / вставки с использованием «width» по высоте, то есть: (dx, dy) = ((originalWidth- (originalWidth * scale)) / 2, (originalHeight - (originalHeight * scale)) / 2)
И это может быть несколько упрощено (вероятно, личным смещением) в классическом процедурном коде, что-то вроде:
offsetFactor = (1.0 - scale) / 2;
dx = originalWidth * offsetFactor;
dy = originalHeight * offsetFactor;
Как рассчитать расстояние между верхним левым угломдва изображения?
О, но ваш вопрос был о расстоянии ... тогда это, конечно, d = sqrt((dx*dx) + (dy*dy));
... но половина времени программистам это нужно, квадратное расстояние (d_sq = (dx*dx) + (dy*dy);
)достаточно, например, для сортировки или проверки, находится ли что-то в радиусе (тогда вы сравниваете значение квадратного радиуса) и т. д.… тогда можно избежать вычисления корня, что часто является основной оптимизацией, если задействовано много значений.(Одним из случаев, когда это не летит, является модель светлой штриховки в 3D, которая делала «затенение фонга» довольно дорогой функцией ранних 3D-рендереров, так как вы не можете избежать по крайней мере неточного вычисления корня на пиксель там)