22:46

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
Эм... народ, я тут туплю малясь, может кто подсказать что? Извиняюсь за кривое рисование.

Дано: рогатка (вид сверху), резинка и шарик.
Ось X - право/лево.
Ось Z - вдаль (вверх, на рисунке).
Ось Y не рассматриваем, считаем что гравитация не действует и снаряд летит параллельно полу.

Ось Z символизирует натяг резинки. То бишь, чем больше натяг по оси Z, тем дальше летит шарик. Оси Y и X лишь корректирую направление.
Если натяг сильный - проблем вроде нет, снаряд (красный кружочек) летит по свое траектории, пролетая при этом через "точку старта" (на неё показывает красный вектор), в которой он был перед началом натяжения резинки - между двумя рогатинами (коричневые кружочки).

Проблема возникает при слабом натяжении по Z и сильном натяжении по X (см. рисунок.).
С одной стороны, сильное смещение по X и снаряд должен лететь достаточно сильно.
Но в это же время, натяжение резинки не такое уж и большое (ограничено зелёными пунктирными линиями).

У меня собсно вопрос - как будет в реале лететь снаряд (и как он будет лететь после вылета из зоны рогатки)?
Я сделал предположение, что по синему вектору, т.к. натяжение слабое и долететь до "точки старта" он не успеет.

У кого какие мысли? А то чего-то смотрю я на это и чувствую, что что-то тут не так. Короче, сомневаюсь я в своей логике.

Собсно быстросваяный рисунок.


@темы: | i |

Комментарии
21.11.2013 в 23:23

[дочь Топографического Кретинизма] [удав в тапочках] [кактус укоризны]
Если считать, что натяжение чёрной резинки одинаково во всех точках резинки, резинка идеально гибкая (охватывает шарик) и шарик по ней не перекатывается и не скользит, то, кажется, движение шарика будет описываться одной из ветвей гиперболы с фокусами в рогатинах.
22.11.2013 в 00:57

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
~Рыжий~, Бля... мать, ты суров.))))

На самом деле, тут моя ошибка - я не так нарисовал - там две резинки и плашка между ними.
Совместными пинаниями от Мюсли и руганью от Грина пришли к следующему.

----------------------------------------------------------------------------------------------
Необходимые данные (имеющиеся): исходные и конечные координаты тех концов резиночек, которые соединены с плашкой.

Делаем:
1) Для каждой из резинок вычисляем смещение по каждой из координат, разницу между исходным состоянием - состоянием покоя, и текущим - состояние натяжения резинки.

Rb(rXb; rYb; rZb) - исходные координаты конца, соединённого с плашкой, для правой резинки.
Rc(rXc; rYc; rZc) - текущие координаты конца, соединённого с плашкой, для правой резинки.
Rr(rXc-rXb; rYc-rYb; rZc - rZb) - вектор силы упругости, стремящейся привести правую резинку в исходное состояние.

Аналогично для левой резинки.
Lb(lXb; lYb; lZb)
Lc(lXc; lYc; lZc)
Lr(lXc-lXb; lYc-lYb; lZc - lZb)

Для того, чтобы узнать результирующий вектор, который покажет правильное направление полёта шарика, нужно сложить оба получившихся вектора. Или, другими словами, приложить начало одного вектора к концу другого и узнать длину диагонали параллелограмма, постороенного на этих векторах. :apstenu:

В итоге, результирующий вектор имеем как:

С((rXc-rXb) + (lXc-lXb); (rYc-rYb) + (lYc-lYb); (rZc - rZb) + (lZc - lZb)).
----------------------------------------------------------------------------------------------

Воть. Единственное, что вызывает сомнение, это правильно ли высчитываем вектор упругости. Т.к. из разговора с Гюго пришли к выводу что надо из текущего положения вычитать конечное. В сети же определение вектора идёт путём вычитания координат начала вектора из координат его конца. То бишь, наоборот.

Отсюда вывод - надо проверить. Назначить тестовые данные и посчитать. В каком варианте вектор будет ОТ нас, тот вариант и верен.)))
Пробую.

Rb (-2; 2; -3) - покой.
Rc (4; -1; -5) - натянули резиночку.
Rr(4-(-2); -1 - 2; -5 - (-3)) = Rr(4 + 2; -1 - 2; -5 + 3) = Rr(6; -3; -2) - Получился вектор, смотрящий в нашу сторону. Вывод, вектор упругости считается наоборот. Не из текущего состояния вычитается исходное, а из исходного текущее. Проверяю.

Rr(-2 - 4; 2 - (-1); -3 - (-5)) = Rr(-2 - 4; 2 + 1; -3 + 5) = Rr(-6; 3; 2) - Получился вектор смотрящий ОТ нас. Теоретически, это верно.)))
24.11.2013 в 11:50

Почетный Бредогенератор
Ты что там Angry Birds пишешь? :-D
24.11.2013 в 12:55

Правильного ответа нет. Любой выбор приводит к жертвам, любое решение требует платы. | Лишь навык имеет значение.
FlashFire, Типа того.) Не совсем, но как пример, заказчик именно сие мне и указал. Только +1 плоскость.