Цитата:
|
Сообщение от EvroStandart
Вот снова понадобилось. Теперь уже больше математичекое решение нужно.
То есть имеем два коридора под прямым углом в виде буквы "Т" и пианино. Дана длинна пианино, ширина пианино, ширина первого коридора, ширина второго коридора. Как вычислить пролезет ли там пианино?

|
Попробуем решить. Только решение боюсь, будет длинным, поэтому я разобъю несколько этапов, каждый опишу подробно.
Этап 0: Подготовительный этап. Вводятся условные обозначения, система координат, начальные условия, базис, по которому можно однозначно восстановить положение пианино в данной с.к., формулы вычисления координат границ пианино.
Этап 1: Движение точки А вдоль прямой x=0.
Этап 2: Движение стороны АВ пианино, упираясь в точку P. Вычисление закона движения точки А.
Этап 3: По закону движения точки А можно восстановить закон движения стороны BC.
Этап 4: Проверка, пересекает ли прямая ВС точку Q? Если не пересекает, то пианино сможет совершить заданный маневр.
Начальное и конечное положение - см. рисунок.
Так как я не владею английским языком, скажите, верно ли я понял условие задачи?
Пусть координаты пианино зависят от времени, поэтому:
A(t): (X_a(t), Y_a(t))
B(t): (X_b(t), Y_b(t))
C(t): (X_c(t), Y_c(t))
D(t): (X_d(t), Y_d(t))
Положение пианино можно однозначно задать координатами точки
А и ориентацией пианино (направлением вектора
АВ).
Но можно ввести дополнительное ограничение: Пусть точка
D будет всегда прижата к нижней стене (в введенной системе координат - это означает, что y_d(t)=0 для любого t). Поэтому можно ограничится только координатами точки А и с соблюдением того, чтобы наше условие всегда выполнялось.
Другие точки пианино будут выражаться так:
cos(phi)=Y_a(t)/|AD|
sin(phi)=(X_d(t)-X_a(t))/|AD|
cos(phi)^2+sin(phi)^2=1
=>
(X_d(t)-X_a(t))/|AD|=sqrt(1-(Y_a(t)/|AD|)^2)
X_d(t)=X_a(t)+sqrt(y^2-Y_a(t)^2)
Y_d(t)=0
Координаты точек B и C нам не понадобятся. (но нам понадобятся уравнения прямых, проходящих через эти точки - они будут выведены позже.)