въртяща се координатна система с времето

Не съм сигурен дали това е правилното място за въпроса ми, но ще опитам. Предполагам, че е нещо средно между CS и физиката, но тъй като програмирам това на C++, ще го публикувам тук.

Гледам частица в 3D, която се огъва в (x, y)-равнината поради сила, приложена към нея, както е показано на фигурата. Силата е удебелената стрелка, влизаща от NE. Ъгълът между оста y и силата е "а".

настройка

Частицата влиза отляво с вектор на скоростта (v_x, v_y, v_z) и се огъва около ъгъла. Това е добре и лесно описано от втория закон на Нютон, няма проблеми. Това е лесно за решаване числено, напр. по метода на Ойлер. Приложих го успешно, засега добре.

Въпреки това, както подсказва фигурата, частицата се движи в цилиндрична тръба с постоянен диаметър h и аз искам да намеря нормалното разстояние до стената както в x-, така и в z-посока (която сочи извън екрана) в даден момент t. Под „нормално разстояние“ имам предвид, че ако координатната система се върти заедно с частицата, тогава искам да знам разстоянието от частицата до ръба на тръбата по y и z (както е илюстрирано с 3 малки стрелки, сочещи към ръба на тръбата ). Крайната цел е по някакъв начин да разберем дали частицата е ударила стената или не.

За z-посоката това е тривиално, тъй като оста му не се променя по време на траекторията. Но y-посоката ми създава огромни проблеми. Това е въпросът ми: Има ли начин да намеря разстоянието до ръба на тръбата по y по време на траекторията? Обърнете внимание, че правя това числово, така че не е задължително да имам нужда от аналитичен израз.

Най-добре, Найлс.


person BillyJean    schedule 18.10.2012    source източник
comment
Във вашия въпрос има някои подробности, които не са много ясни за мен: координатната система центрирана ли е в частицата и векторът x следва посоката на движение на частицата? (тъй като казвате, че се върти). Освен това изчислението силно ще зависи от това как представяте пътя на тръбата... базирано ли е на пиксели? базирани на сегменти? имате ли някакво параметрично описание? Ако отговорите на това във въпроса си, вероятно ще мога да ви помогна :)   -  person dunadar    schedule 18.10.2012
comment
системата е центрирана около центъра на тръбата, така че x ще следва това също (тъй като частицата се движи). това е кръг, така че предполагам, че мога да го опиша параметрично. Отговорът на Тайлър Дърдън е доста полезен, дава ми това, което искам. благодаря, че отделихте време да помислите върху моя проблем.   -  person BillyJean    schedule 19.10.2012


Отговори (1)


Не казвате каква е формата на тръбата, но като цяло:

  1. Ако извивката на тръбата е кръгла, тогава изчислете разстоянието от частицата до центъра на кривината (центъра на окръжността) както за вътрешния, така и за външния ръб на тръбата. Наречете това Dpi и Dpo (разстояние от частицата до центъра на кривината, вътрешно и външно). Разстоянието от центъра на кръга до самата тръба е постоянно: радиусът на кръга, Ri и Ro. След това можете да изчислите разстоянието на частицата от вътрешната и външната част на тръбата чрез Dpi - Ri и Dpo - Ro.

  2. Ако извивката на тръбата не е кръгла, тогава трябва да разработите функция, която изчислява двата радиуса, Ri и Ro, като функция на ЪГЪЛА на радиуса, тъй като тези стойности вече няма да бъдат постоянни. След като имате тази функция, изчислявате Dpi(theta) и Ri(theta) и Dpo(theta) и Ro(theta) и вашите разстояния са разликите, както по-горе.

person Tyler Durden    schedule 19.10.2012