Когда вы меняете размер изображения, как вы рассчитываете счетчик значения координаты в реальном размере? - PullRequest
0 голосов
/ 26 марта 2019

Я хочу знать значение координат, когда изображение растянуто от центра.

Я знаю одну пиксельную координату в текстурном изображении, и я использую приведение лучей, сопоставляя его с экраном мобильного телефона.

Но я не знаю, как изменяется значение координаты при увеличении изображения.

enter image description here

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

Изображение увеличится до 1,33f.

enter image description here

1 Ответ

2 голосов
/ 26 марта 2019

В Unity3D могут быть более простые способы - у меня нет никакого опыта - но это звучит как довольно простая проблема масштабирования.

Вам нужно знать следующее:

  • Координаты изображения центра изображения
    Это вектор (width/2, height/2)
  • Координаты экрана центра изображения
    Где центр изображения находится наscreen
  • Коэффициент масштабирования (1.33f в этом примере)

Учитывая вышеизложенное, вы можете рассчитать пиксель, к которому вы прикоснулись, с помощью простой математики:

public Vector2Int ScaleTouch(Vector2Int imgCentre, Vector2Int dispCentre, float scale, Vector2Int touch)
{
    var x = imgCentre.x + (touch.x - dispCentre.x) * scale;
    var y = imgCentre.y + (touch.y - dispCentre.y) * scale;
    return Vector2Int.RoundToInt(new Vector2(x, y));
}

Или используя методы из Vector2 и Vector2Int, вы можете сделать это:

public Vector2Int ScaleTouch(Vector2Int imgCentre, Vector2Int dispCentre, float scale, Vector2Int touch)
{
    var offset = Vector2.Scale(touch - dispCentre, new Vector2(scale, scale));
    return offset + imgCentre;
}

Оба предполагают, что ваша шкала однородна в x и y.Вы можете указать масштабный вектор, если хотите, чтобы он был гибким в отношении масштабирования по разным осям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...