Ух ты, воспоминания. Прошло более шестнадцати лет ...
В принципе, каждая строка представляет собой «сегмент», а идентификаторы начала строки представляют собой идентификатор сегмента. Каждый сегмент содержит «элементы», которые по существу являются позиционными полями. Они ограничены «разделителями элементов».
Разные сегменты означают разные вещи и могут указывать циклические конструкции, повторы и т. Д.
Вам нужно получить текущую версию стандарта для базового синтаксического анализа, а затем вам нужен словарь данных для описания содержания документа, с которым вы работаете, а затем вам может понадобиться профиль отрасли, руководство по внедрению или похоже на соглашения с конкретным типом документа в вашей среде.
Примеры? Не актуально, но я уверен, что вы можете найти целую кучу, используя выбранную вами поисковую систему. Как только вы закончите базовый анализ сегмента / элемента, вы будете иметь дело с данными уровня приложения, и я не знаю, насколько общий пример поможет вам в этом.
Как вы обнаружили, для вашего преобразования обратно в трехмерное пространство требуется какая-то координата Z, чтобы иметь хоть какой-то смысл.
Я бы посоветовал вам выполнить обратное преобразование дважды . Один раз с координатой Z рядом с экраном (ближайшей к наблюдателю) и один раз с координатой Z в задней части 3D-сцены. Эти две трехмерные точки дадут вам трехмерную линию, которая займет все позиции «позади» этой двухмерной точки.
вы не можете. вы проецируете на экран, который теряет информацию.
Если подумать, несколько трехмерных координат проецируются на одну и ту же точку на экране, и простого знания этой экранной координаты недостаточно для восстановления исходной координаты.
[править] глядя на координаты экрана, вы даете им всем z-значение 0. Это означает, что все последние столбцы вашей матрицы проекции должны иметь все нули, что делает эту матрицу необратимой.
Каждый пиксель на экране представляет собой линию от глаза смотрящего в воображаемый трехмерный мир за экраном. Вы должны пересечь эту линию с любыми объектами, которые могут скрываться в этом мире, чтобы получить трехмерные координаты.