Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2013, 13:52   #31
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
x := L*cos(a)
y := L*sin(a)
Эм... а так, чтоб понятно было? У меня очень туго с переводом формул на свое задание.
треугольник.png
Хочу узнать координаты точки В. Что есть L для ее? Я правильно понимаю, L - это нужное расстояние? Т.е. в данном случае L = стороне а? А в случае моего шара L = 10?

Я уже говорила, почему я не хочу привязываться ко времени.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 29.03.2013, 14:05   #32
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

1.
Цитата:
Я уже говорила, почему я не хочу привязываться ко времени.
Не понял. Почему? Чем не подходит предложенный мной алгоритм?
Еще учтите, что после отражения шар опять может напороться на стену. Тут или мой алгоритм, или рекурсия на каждой итерации, пока не перебрали все возможные отражения. Но мой вариант, кажется, проще.
А в системе с несколькими шарами, после любого столкновения однозначно всё пересчитывать придётся. Вот я и предлагаю вам такой алгоритм.
1. Считаем время до следующего столкновения T
2. Спокойно рисуем все передвижения N = T mod dt раз (Если надо, рисуем последний момент (столкновение) через T - (dt * N))
3. Считаем время до след...
4. ...

2.
Цитата:
Хочу узнать координаты точки В.
Поподробнее.
3.
Зачем используете угол и путь? ИМХО - смещения dX и dY куда приятнее в подобных вычислениях.
4.
Вот, для наглядности. Может поможет.
Бильярд.jpg

Последний раз редактировалось Sibedir; 29.03.2013 в 14:31.
Sibedir вне форума Ответить с цитированием
Старый 29.03.2013, 15:01   #33
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Ваш алгоритм использует расстояние от точки до точки. Ну только так можно узнать время. Потому что проблематично узнать время, не зная точки назначения. Я правильно рассуждаю? У меня в закрытом прямоугольном пространстве движутся, скажем, сто шариков с учетом сопротивления пространства. Возьмем один из шариков. у него координата (10,10), в точке (40, 40) он будет через 5 секунд. Задан интервал в одну секунду. Запускаю интервал на каждую секунду, т.е. в каждую секунду происходит вызов функции foo, в которой отрисовывается шарик в новых координатах. Далее появляется еще один шарик, который должен столкнуться с нашим через 4 секунды и еще один через 3. Как я понимаю, мы просматриваем все препятствия и выбираем самое ближайшее к нашему шарику по расстоянию. И снова запускаем цикл на отрисовку, только уже относительно другой конечной точки, а именно столкновения с другим шариком. Но так как шариков много, то нам все равно нужен будет какой-то цикл, который будет каждый момент (кстати, какой именно момент? 1мс, 10мс или сколько?) будет проверять: а не появилось ли какое-то препятствие на пути нашего шарика. Появилось - пересчитываем снова время до препятствия и снова запускаем новый таймер. А вдруг тот шарик будет "проглочен" или откинут другим шариком? Так что в вашем алгоритме тоже присутствует рекурсия или что-то вроде того.

В моем алгоритме есть только один таймер - общий, в котором проверяется всего только следующий шаг. Даже если в моем алгоритме будет рекурсия (еще не делала, только для одного шара пытаюсь), то там не будет пересчета тысячи действий.

Цитата:
Поподробнее.
Вы дали формулу нахождения координаты точки по углу и длине отрезка. Я прошу переписать ее относительно моего рисунка. Вообще в данном треугольнике мне известны длины всех сторон, размеры всех углов и координаты точки А(которая около острого угла). Из всего этого безобразия мне нужно узнать координаты точки В.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 29.03.2013, 15:15   #34
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
сто шариков с учетом сопротивления пространства
Ещё не легче. Может еще и момент импульса добавим и неупругие взаимодействия
ACE Valery, давайте так. Нарисуйте как один шарик катается по прямоугольному столу с бортами. Учитываем силу трения (const). Соударения абсолютно упругие. Дальше будем усложнять.
Цитата:
Я прошу переписать ее относительно моего рисунка
Я как-раз и не понял рисунка (что куда движется).
Sibedir вне форума Ответить с цитированием
Старый 29.03.2013, 15:29   #35
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
Может еще и момент импульса добавим и неупругие взаимодействия
Не, этого не надо С тем, что я несчастный шарик не могу уже третий день от борта отрефлексить, при том, что с данной частью математики у меня проблем не было, то физика меня вообще убъет, т.к. я ее даже и не понимала, а потом еще и забыла

Цитата:
Нарисуйте как один шарик катается по прямоугольному столу с бортами.
Вот это я и пытаюсь сделать

Цитата:
Я как-раз и не понял рисунка (что куда движется).
Ничего никуда не движется. Тут просто формула нужна нахождения вершины треугольника по одной вершине, углу и расстоянию между данной вершиной и искомой.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 29.03.2013 в 15:32.
ACE Valery вне форума Ответить с цитированием
Старый 29.03.2013, 15:40   #36
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Тут просто формула нужна нахождения вершины треугольника по одной вершине, углу и расстоянию между данной вершиной и искомой.
X1 = X0 + L*Cos(Alfa)
Y1 = Y0 + L*Sin(Alfa)

Но верно только если другая сторона треугольника (относительно данного угла) параллельна оси координат. Иначе нужно делать повороты или же усложнять формулу.

Т.е. если угол наклона прямой равен Beta, то:

X1 = X0 + L*Cos(Alfa - Beta)
Y1 = Y0 + L*Sin(Alfa - Beta)
т.е. вполне можно воспользоваться формулами разностей синуса и косинуса тригонометрии. синусы и косинусы углов наклона прямой тоже несложно вычислить, если известны две ее точки:
sin(Beta) = dy/ sqrt(dx*dx + dy*dy)
cos(Beta) = dx/ sqrt(dx*dx + dy*dy)

Цитата:
Вот это я и пытаюсь сделать
это, кстати, для прямоугольной коробки в общем случае сделать не столь и сложно:

пусть коробка с размерами 300 * 500 точек, а шар с радиусом 10 точек, тогда проверку можно проводить на соответствие центра шара координатам:

x < 10 или x > 290 тогда dx = -dx (изменяем направление движения)
x < 10 тогда x = 2*10 - x
x > 290 тогда x = 2*290 - x

y < 10 или y > 490 тогда dy = -dy ( изменяем направление движения)
y < 10 тогда y = 2*10 - y
y > 490 тогда y = 2*490 - y
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 29.03.2013 в 16:09.
DiemonStar вне форума Ответить с цитированием
Старый 29.03.2013, 16:18   #37
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Ребят, повторюсь: у меня нет проблем с чтением учебников, у меня проблемы с пониманием формул в таком виде.
Цитата:
X1 = X0 + L*Cos(Alfa - Beta)
Y1 = Y0 + L*Sin(Alfa - Beta)
Что в этой формуле L, какие углы обозначены как альфа и бета? Я понимаю, что у вас нет свободного времени рисунки рисовать для бестолочи, но хотя бы пояснения какие-то...
треугольник2.png
Т.е., если у вершины А координаты (7, 5), угол альфа = 30, угол бета = 60, то формула имеет вид:
Код:
х1 = 7 + 3 * cos(30-60);
y1 = 5 + 3 * cos(30-60);
Так? Если не так, то покажите, плиз, формулу, исходя из моего прямоугольника.

Цитата:
sin(Beta) = dy/ sqrt(dx*dx + dy*dy)
cos(Beta) = dx/ sqrt(dx*dx + dy*dy)
Что такое тут dx и dy?

Цитата:
пусть коробка с размерами 300 * 500 точек, а шар с радиусом 10 точек, тогда проверку можно проводить на соответствие центра шара координатам:
ну это, конечно, понятно, но хотелось бы без топорных методов
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 29.03.2013, 16:29   #38
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Что такое тут dx и dy?
Проекции расстояния между двумя точками прямой на оси. Вы же не говорили, каким образом задана прямая.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 29.03.2013, 16:34   #39
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Есть ещё один угол (у Вас на картинке равный нулю) - угол между горизонталью и прямой (AC). Если этот угол равен ф и отсчитывается по часовой стрелке (т.е. положительный угол ф означает, что C "выше" A), то
x1 = x0 + |AB|*cos(а-ф); в нашем случае x1 = 7 + 5*cos(а-0) = 7+4 = 11.
y1 = y0 + |AB|*sin(a-ф); в нашем случае y1 = 4 + 5*sin(a-0) = 4+3 = 7.
Abstraction вне форума Ответить с цитированием
Старый 29.03.2013, 20:36   #40
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Abstraction, а вот этот угол я как раз не знаю.

DiemonStar, прямая задана двумя точками. А между этими точками есть еще одна точка, расстояние от которой до стены будет равно 10. Исходя из этих данных я могу найти эту точку?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
векторная алгебра KIRILOW Помощь студентам 61 31.10.2012 15:45
LNK1561 (векторная программа) finz Помощь студентам 6 20.05.2011 18:01
Векторная графика AnReykfi Помощь студентам 0 15.05.2010 14:10
векторная графика. квадрат varelik Мультимедиа в Delphi 18 07.09.2009 22:25
Векторная графика в C++ Builder 6 Max2114 C++ Builder 3 19.01.2009 14:56