Самый питонный способ представления лучевых сегментов - PullRequest
0 голосов
/ 24 марта 2019

Я пишу симуляцию трассировки лучей на python.Существуют источники света, которые излучают световые лучи, которые затем отражаются, поглощаются и передаются на / через поверхности.Я использую vpython в качестве визуализации, но модель данных за ней независима.

Я использую симуляцию для вычисления

  • статистики длины пути (среднее значение, распределение)
  • количество отражений
  • некоторая статистика по углам падения на определенных поверхностях
  • позже я хочу добавить коэффициенты / функции отражательной способности, чтобы рассчитать потерю интенсивности на пройденном пути

Пока передача еще не реализована, но я хочу подготовить для нее структуру данных.Наиболее очевидным решением будет использование составного шаблона, например:

  • есть источники света, их дочерние элементы представляют собой набор сегментов лучей
  • , каждый сегмент лучей имеет начальную и конечную точки и можетиметь 0 (полное поглощение), 1 (отражение) или 2 (передача + отражение) детей.

Когда я реализовал этот шаблон, я понял, что python не «любит» рекурсии - это самый очевидный способ пройтись по моему дереву лучевых сегментов и отобразить их или вычислить новые.

Хранение сегментов в виде списков представляется неправильным из-за случая, когда есть 2 дочерних элемента.

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

Есть ли простой, питонный способ представить и пройти эти сегменты лучей?

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