Расчет площади проекции куба - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над измерением проектируемой площади куба, обращенного к солнцу, для курсовой работы моего космического корабля. Куб имеет размеры 1x1x1 и постоянно вращается за счет своей орбиты. Используя программу под названием «STK», были получены данные для сдвига угла в соответствии с эталоном. Так что теперь у меня есть смещение ориентации куба каждые 30 минут, но теперь мне нужно вычислить, какая часть проецируемой области будет подвергаться воздействию солнца (могу предположить, что солнечный свет исходит из одного направления).

Мне нужно уметь перевести смещение координат в ориентации куба на то, какая часть проецируемой области будет смотреть на солнце в каждый интервал времени. Позвольте мне привести вам пример:

В начальный момент времени куб обращен к вам (вы - солнце ... потому что вы - мое солнце;)), и никакого сдвига не произошло, следовательно, спроецированная область будет быть 1 м ^ 2.

Через 30 минут произошел сдвиг только по оси x на 45 градусов. Теперь площадь проекции составляет 1,4142 м ^ 2 (поскольку cos 45 * 1 = 0,7071, и теперь у вас есть 2 лица, обращенные к вам).

Через 60 минут происходит только смещение оси y (45 градусов). Теперь у вас есть 3 неполные грани куба, и вы проецируете площадь 1.707 м ^ 2.

Это не сложно сделать с небольшими сдвигами, но мне нужно сделать это несколько раз (больше чем 100 смен). Я имею в виду написание программы python, которая вращает трехмерный объект и измеряет проецируемую площадь на каждом интервале. Какие-нибудь рекомендации по библиотекам, которые позволяют определять и вращать трехмерное тело? библиотеки, которые могут измерять площади проецируемых поверхностей?

1 Ответ

1 голос
/ 04 мая 2020
  • Establi sh единичный вектор, перпендикулярный каждой грани куба. В зависимости от выходных данных вашей программы вращения, вы можете использовать angular поворотов от базовых осей или вы можете взять векторное перекрестное произведение 2 ребер грани (соблюдайте осторожность с правилом правой руки, чтобы результат был направлен наружу)
  • возьмите скалярное произведение каждого из результирующих 6 векторов индивидуально с вектором "указывающим на солнце"
  • отбросьте все отрицательные результаты (лицом к солнцу)
  • сложите остаток

Векторов единиц будет достаточно, поскольку площадь поверхности каждой грани составляет 1 кв. Единицу.

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