Я пишу приложение, которое визуализирует 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
}
Спасибо за любую помощь