То, о чем вы говорите, в очень буквальном смысле: трассировка лучей . Математика и код, лежащий в основе этого, не особенно сложны, особенно если вам не нужно учитывать отражения. Вот учебник для того, чтобы сделать именно это в C ++ здесь ; Пересечение треугольника почти так же просто, как пересечение сферы, и вы можете полностью игнорировать свойства поверхности. Если вы не хотите писать свой собственный код (но, если серьезно, это может быть сто строк, чтобы сделать то, что вы ищете), есть подсказка, как заставить Povray делать то, что вы после здесь .
РЕДАКТИРОВАТЬ: больше математики, включая пересечение треугольника, здесь .