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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2009, 23:59   #1
ritm
 
Регистрация: 07.01.2009
Сообщений: 5
Восклицание Реализация работы с пикселями:

Помогите с реализацией программы :
надо визуально показать падение луча - предполагается что он будет состоять из пикселей, и если встречается поверхность то лучик должен отразится под углом падения ( в общем по физическим законам) - как это реализовать визуально?
ritm вне форума Ответить с цитированием
Старый 08.01.2009, 00:26   #2
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Если все это рисовать в 2D, то падающий и отражающий луч можно задать в виде линейной функции прямой
Т.е. задать падающий луч как функция y(x)=kx+b в результате отражающий луч будет представлен функцией y(x)=-kx-b.
Пример, как будут выглядеть данные прямые представлен на рисунке ниже.
1.PNG

Последний раз редактировалось iankov; 08.01.2009 в 00:32.
iankov вне форума Ответить с цитированием
Старый 08.01.2009, 00:48   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А реализация и того проще - LineTo.
mihali4 вне форума Ответить с цитированием
Старый 08.01.2009, 00:54   #4
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А реализация и того проще - LineTo.
А как ты собираешься при помощи lineto отражение луча сделать?

Я бы при помощи вышеупомянутых функций просто прошелся бы по циклу и попиксельно отрисовал бы каждый луч.
iankov вне форума Ответить с цитированием
Старый 08.01.2009, 01:03   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вы можете использовать сколько угодно циклов. Ваше право.
Я же предлагаю два оператора LineTo - один для прямого луча, другой для отраженного.
mihali4 вне форума Ответить с цитированием
Старый 08.01.2009, 01:15   #6
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Вы можете использовать сколько угодно циклов. Ваше право.
Я же предлагаю два оператора LineTo - один для прямого луча, другой для отраженного.
Ну я понимаю, вот и спрашиваю, пусть например падающий луч имеет функцию lineto(x2,y2) при условии что мы находимся в точке x1, y1. Вот как теперь сделать отражение этого луча? Где будут начальные координаты и какие координаты вставить в lineto() чтобы угол падения луча получился углу отражения. В принципе реально повозится, но напряжно =)
iankov вне форума Ответить с цитированием
Старый 08.01.2009, 02:18   #7
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Можно поинтересоваться: линия от которой луч будет отражаться будет горизонтальной или произвольной?
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 08.01.2009, 02:42   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это чистая геометрия, причем школьный курс. Зная высоту экрана (или параметры области, ограничивающей движение "луча"), точку соприкосновения с границей вычислить по уравнению прямой - примитивнее некуда.
А если чуток напрячься, то можно и уравнение для отраженного "луча" родить...
Только я не по этому делу - я стараюсь научить думать самостоятельно, а не гоняться за готовыми решениями, которых по этой самой причине и не даю.
Если вы не хотите думать самостоятельно, нужно было тему размещать в разделе "Помощь студентам", там собираются (в основном) те, кто не хочет думать и научиться чему-то, а хочет только получить готовый халявный результат, отчитаться перед преподом и вернуться на форум только когда вновь придет время что-нибудь сдавать, за очередной порцией халявы.
mihali4 вне форума Ответить с цитированием
Старый 08.01.2009, 02:56   #9
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Mihali4, на счет помощи студентам я полностью согласен.
Ну если тему создали то нужно её развить мне кажется.
Если отражаться луч будет об горизонтальную поверхность то это совсем просто, а если нет... И еще можно задавать параметры используя коэффициент наклона луча, а можно начальные и конечные точки задавать. Если у кого есть готовый пример выложите и всё.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 08.01.2009, 16:58   #10
ritm
 
Регистрация: 07.01.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Deight Посмотреть сообщение
Можно поинтересоваться: линия от которой луч будет отражаться будет горизонтальной или произвольной?
линия будет произвольной, предполагается что её можно будет перетаскивать по экрану.
ritm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для облегчения работы с TFS - приложение для работы над дефектами и задачами Аякс Софт 1 18.03.2009 11:43
Реализация таблицы Patriot1 БД в Delphi 12 12.12.2008 16:49
Реализация конфигуратора BlackOmen Общие вопросы Delphi 3 30.05.2008 17:12
Реализация тестов aleksei111 Общие вопросы Delphi 2 20.05.2008 12:15
реализация SSL Prowler Работа с сетью в Delphi 1 18.12.2007 13:38