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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2013, 11:50   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sciv, согласен.
Вы абсолютно правы.

свой пост я удалил (в тщетной надежде, что его никто не успел увидеть).
я сам уже понял, что вектор (в отличие от луча - это ограниченный направленный отрезок
А раз он (как и любой отрезок) имеет границы. то, в том случае, когда "морда" попадает на линию, в этом случае можно считать, что "морда" направлена к линии, во всех остальных случаях, когда есть пересечение линии и вектора - "морда" направлена ОТ линии..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.03.2013, 14:26   #12
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

оу, ребят, прошу прощения. У меня после 9 вечера напрочь пропадает способность нормально формулировать мысли.

Насчет того, что я хотела: я понимаю, что в любом случае вектор пересекает прямую. Только в одном направление идет к прямой, а в другом - от прямой.
Вот мое мегахудожество (ось Оу направлена не как в нормальных декартовых, а в компьютерных координатах) и два вектора направления.
вектора.png
И я хочу каким-то образом узнать, что один из них направлен на Ох, другой - от Ох. (Ox не принципиальна, могут быть другие прямые, заданные двумя точками).

А теперь, собственно, для чего мне это нужно. Вполне вероятно (я даже уверена в этом), что я слишком замудрила, и есть более легкие способы, а я изначально пошла не по тому пути.

Есть шарик, есть стена. Нужно сделать так, чтоб шарик отскакивал от стены. Шарик движется с какой-то скоростью, поэтому может быть такое, что пропущен тот момент, когда расстояние от центра шарика до стены равно радиусу. Зачастую это расстояние меньше. Я отражаю шарик в другую сторону, он двигается, но следующий просчет функции НеСтолкнулсяЛиШарикСоСтеной проходит в тот момент, когда расстояние все еще меньше радиуса. И функция радостно оповещает, что да, столкнулся. Как я понимаю, мне нужно сделать в этой функции проверку, а идет ли шарик НА стену или ОТ нее, и если ОТ, то пофиг на расстояние от центра от прямой.

Я уверена, все знают, как это сделать, ткните меня, пожалуйста, носом. Вот три года назад делала такое, и никаких проблем не было, а сейчас решила вспомнить, так сказать, основы, и чего-то туго они у меня идут.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 28.03.2013, 14:32   #13
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

ну и введите логическую переменную, которая бы принимала true - на стену, false - от стены
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 28.03.2013, 14:42   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В вашем случае y-координата вектора все определяет - положительная вектор вниз (к оси X), отрицательная - вверх (от оси Х)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.03.2013, 14:53   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Зачастую это расстояние меньше. Я отражаю шарик в другую сторону, он двигается, но следующий просчет функции НеСтолкнулсяЛиШарикСоСтеной проходит в тот момент, когда расстояние все еще меньше радиуса.
вот я сейчас глупость скажу, наверное..

но я всё равно скажу..

У вас есть расстояние от шарика до стены (да, да, оно меньше радиуса, но это сейчас неважно). Но у Вас есть переменные, которые описывают движение шарика (рискну предположить, что это приращения dx и dy). Передайте их в вашу функцию. Вычислите на какой позиции шарик будет в следущий квант времени (Xn := X + dx; Yn := Y + dy) и просчитайте расстояние от этой позиции до стены.
Если оно больше текущего - шарик движется ОТ стены (отлетает), если оно меньше текущего - шарик движется к стене...

я всё сказал.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.03.2013, 14:56   #16
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Аватар, в этом случае - да. Но хотелось бы, чтоб не только для этого случая работало, а для любых прямых.

Sciv, это я думала сделать на крайний случай. Уверена, что есть более правильное решение.

UPD:
Serge_Bliznykov, совсем не глупость. Я этот вариант оставила тоже на крайний случай.

Просто я все еще надеюсь, что есть какая-то умная геометрическая формула, которая по вектору направления может определить это самое направление относительно заданной прямой. Но учебники об этом умалчивают
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 28.03.2013 в 14:59.
ACE Valery вне форума Ответить с цитированием
Старый 28.03.2013, 15:06   #17
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
И я хочу каким-то образом узнать, что один из них направлен на Ох, другой - от Ох. (Ox не принципиальна, могут быть другие прямые, заданные двумя точками).
Пусть есть прямая, заданная уравнением L(x,y)=ax+by+c=0. Прямая, проходящая через точки (x1,y1) и (x2,y2) задаётся уравнением L(x,y)=(x-x2)(y1-y2)-(y-y2)(x1-x2)=(y1-y2)x+(x2-x1)y+[(y2-y1)x2+(x1-x2)y2]=0
Пусть есть точка (x0,y0) и свободный вектор V=(Vx,Vy).
Пусть, для определённости, L(x0,y0)>0. Тогда вектор, "приложенный" к точке, направлен к прямой если и только если a*Vx+b*Vy<0; от прямой если и только если a*Vx+b*Vy>0. Равенство этого скалярного произведения нулю означает, что вектор параллелен прямой.
При L(x0,y0)<0 всё наоборот.

Цитата:
Если оно больше текущего - шарик движется ОТ стены (отлетает), если оно меньше текущего - шарик движется к стене...
Может пролететь сквозь стену же и расстояние увеличится. Можно, конечно, и отсюда танцевать, объём вычислений будет почти тот же.

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

Цитата:
Пусть есть точка (x0,y0)
Это точка на прямой?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 28.03.2013, 16:04   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Это точка приложения вектора. Т.е. откуда он исходит. В вашем случае любая точка в области, по которой шарик перемещается вне стены
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.03.2013, 16:15   #20
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Все, поняла, спасибо Но такой способ тоже не прокатывает. Если получилось так, что шарик таки зашел за прямую, то, естественно, вектор снова будет на нее указывать. Что ж, по крайней мере, я поняла, что то, что я хотела сделать, невозможно.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
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