Ответ 1
Простым способом было бы использовать рисование холста для рисования четырехсторонних фигур.
Рассмотрим каждый 4 угла. "Нетронутый" прямоугольник будет в полном размере, а коснутый прямоугольник будет меньше.
Вам просто нужно нарисовать свою четырехстороннюю форму, используя точку, которую вы вычисляете для каждой части прямоугольника. Вы можете получить позицию касания, а затем выяснить, сколько "веса" дать каждую точку.
чтобы рассчитать каждый угол, вам нужно выяснить, сколько "веса" дать коснутую координату и сколько "веса" дать нетронутую координату. Если вы коснетесь левого верхнего угла, этот угол будет использовать 100% касательной координаты, а остальные три угла будут использовать нетронутую координату.
Если вы коснулись верхней середины, вы получите такую форму:
Мы можем рассчитать углы для любого касания, вычислив, насколько далеко от угла ваше прикосновение
float untouchedXWeight1 = Math.abs(xt - x1)/width;
//maximum of 1, minimum of 0
float untouchedYWeight1 = Math.abs(yt - y1)/height;
float untouchedWeight1 = (untouchedXWeight1 + untouchedYWeight1)/2;
//also maximum of 1, minimum of 0
float touchedWeight1 = 1 - untouchedWeight1;
поэтому с этими весами вы можете рассчитать свои позиции x и y для этого угла:
x1 = xUntouched1 * untouchedWeight + xTouched1 * touchedWeight1;
y1 = yUntouched1 * untouchedWeight + yTouched1 * touchedWeight1;
Затем сделайте аналогично для остальных 3 углов.