Как вычислить дельта X, Y при выравнивании вектора с тенями таким образом, чтобы он отображался в том же положении?

#math #graphics #geometry #gaussian #gaussianblur

#математика #графика #геометрия #гауссовский #gaussianblur

Вопрос:

Я сглаживаю вектор из инструмента проектирования (эскиза) в PNG. Вектор может иметь тень:

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

В этом случае X и Y перед выравниванием равны 100×100, а ширина и высота перед выравниванием тоже равны 100×100.

По соображениям автоматизации я автоматически выполняю выравнивание этого вектора в формате PNG в фоновом режиме (это CLI, работающий на сервере). Затем инструмент выдает мне новую ширину и высоту PNG, но, в отличие от изображения ниже, новые или дельта X и Y неизвестны:

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

Как вы можете видеть выше, иногда эти векторы имеют тени, из-за которых рамка изображения будет больше при сглаживании, так что тень включается в экспортируемое изображение. Однако это также означает, что X и Y нового кадра должны быть скорректированы таким образом, чтобы отображаемая часть нового кадра все еще находилась в исходном положении.

Вот почему новые X и Y равны 29×44 (с шириной и высотой 233×244).

Вопрос в том, как вычислить новые или дельта X и Y на основе свойств исходного вектора (вкл. теневые реквизиты x, y, размытие, распространение) и / или ширина / высота нового сглаженного изображения (которые известны).

Краткие сведения

Мне нужно вычислить дельта X и Y таким образом, чтобы положение отображаемого изображения было таким же, как до изменения размера его кадра, чтобы включить тень в ее сглаженную форму.

Возьмите этот тестовый пример:

Перед выравниванием

 frame x = 100
frame y = 100
frame width = 100
frame height = 100
shadow x = 0
shadow y = 20
shadow blur = 80
shadow spread = 0
  

после выравнивания:

 frame x = 29 (*) 
frame y = 44 (*)
frame width = 233
frame height = 244
  

У меня есть все вышеуказанные значения, КРОМЕ фреймов после сглаживания x и y (помеченных *). Как мне разработать формулу, которая вычисляет эту дельту X, Y из свойств фрейма и тени вектора и / или ширины / высоты нового фрейма PNG?

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

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