Как преобразовать экранные координаты в нормализованные координаты устройства металла - PullRequest
0 голосов
/ 05 ноября 2018

Я пишу приложение, которое визуализирует 3D-объект с использованием Metal. Я хочу определить, касается ли пользователь объекта, поэтому у меня есть тест пересечения, чтобы определить это. Мне нужно нормализовать значения x и y, которые я получаю из экранных координат штрихов, чтобы они соответствовали NDC Metal.

Я видел несколько попыток работы с OpenGL, но не смог реализовать правильную формулу в своем собственном коде:

func isIntersection(location: CGPoint)->Bool{
  // adjust x, y by multiplying by the projection and model matrix that have been modified previously 
  let v = identity * proj * model * vec4(location.x, location.y, 0, 1)
  // attempt to get normalized x and y
  let locx = v.x / view.bounds.size.width
  let locy = v.y / view.bounds.size.height

  //... test intersection

}

Спасибо за любую помощь

...