Сколько времени занимает VPython, чтобы обновить положение объектов

Я создаю виртуальный пул / бильярд с использованием VPython. Я хотел бы, чтобы он обновлял позицию каждые dt количества "времени" (я использую rate() для ограничения времени цикла), а не быстрее.

Мои расчеты для положения смотреть вперед на любые потенциальные столкновения 0

Например: если dt=1, и я обнаруживаю столкновение в 0,25 с, я продвигаю позиции на 0,25 с, вычисляю новые скорости, затем проверяю столкновения в течение следующих 0,75 секунд. Это повторяется до тех пор, пока столкновения не будут обнаружены в текущем скачке времени. Затем я хотел бы показать это изменение положения объектов. (тогда rate() вызывает ожидание до следующего раза)

Мой вопрос заключается в следующем: быстрее ли выполнять векторную математику, вытягивая такие вещи, как сфера. Положение = сфера. Положение + сфера. Скорость *t1 --- или --- перед обнаружением столкновений, изменяющих все векторы положений и скоростей в кортежи и обратно? для векторов, затем выполняем векторную математику, затем преобразуем в кортежи, затем в векторы, прежде чем присваивать новые значения положения / скорости t = t + dt.

Преобразование необходимо, потому что векторы являются изменяемыми данными, и, следовательно, извлечение значений в новые переменные и выполнение математических операций по-прежнему изменяет значения phere.position и, следовательно, приводит к обновлению позиции на экране.

По сути, Vpython приостанавливает другие процессы, пока он визуально обновляет позицию, или он работает так быстро, как может, в то время как числа хрустят так быстро, как могут?

Дайте мне знать, если мне нужно объяснить что-то более четко

РЕДАКТИРОВАТЬ:

Понял, что я могу использовать дешевое решение для этого.

>>> h=vector(5,6,2)
>>> j=h
>>> j.mag*=2
>>> j
vector(10, 12, 4)
>>> h
vector(10, 12, 4)

Вышеуказанный сегмент показывает, что произойдет, если вы непосредственно скопируете вектор. Но если вы умножите на единицу во время копирования, это создаст новый вектор, так как технически значение было изменено, но численно это то же самое

>>> k=h*1
>>> k
vector(10, 12, 4)
>>> k*=2
>>> k
vector(20, 24, 8)
>>> h
vector(10, 12, 4)

0 ответов

Другие вопросы по тегам