Здравствуйте, goto, Вы писали:
G>Вообще-то все зависит от соотношения масштабов шарик/растровое поле/шаг движения шарика за ед. времени (такт, кадр). Насколько меняется скорость шарика?
Шарик — 5-20 пикселей диаметр, растр — минимум 1000х1000 точек, Шаг шарика может превышать размеры шарика (мин — 1 пиксель, макс — 40-50 пикселей).
G>Банальные фантазии (если шарик движется медленно). Смотрим, попадают ли точки растра в квадрат, охватывающий шарик.(...)
G>Задачку можно ускорить, если для шарика тоже построить растровую маску, тогда не надо вычислять расстояния, (...)
Данное вроде не подходит, так как шаг может быть достаточно крупным. Покрайней мере я не знаю как это прикрутить...
G>Возможно надо (когда надо) просчитывать движение шарика с уменьшенным шагом по времени (можно сообразить или подобрать инвариантное значение — радиус шарика, деленный на скорость, фактичкски определить какую часть своего размера шарик должен проходить за расчетный шаг времени), чтобы он не оказался полностью или частично внутри растра или не прошел насквозь.
А это не слишком трудоемкий процесс при больших скоростях большом количестве шариков? Не уверен, что это в реальном времени работать будет...
G>Оптимизаций можно придумать много. Вообще задачка может оказаться вязкой, если все делать очень честно и не вводить насильственные правила и упрощения. Зависит от подробностей.
Упрощения вводить можно сколько угодно, главное условие — чтобы глаз не цеплялся за кривую физику отскока. Абсолютно точных результатов не надо.
G>Ну и еще. Я фантазирую, а в играх вобщем-то задача довольно хорошо объезжена,имхо. Забыл, как она там называется, что-то вроде hit test. Алгоритмы, думаю, хорошо отработаны.
Обшарил инет где мог и где знал, ниодного подобного алгоритма не нашел

если кто найдет — киньте ссылочку.
Немного подумав пришел к мысли разработать алгоритм, когда шарик "сжимаем" в точку (как в worms'ах, тобишь диаметр к одному пикселю сводим). Здесь есть только одна загвоздка — узнать угол отражения (но как ее решать я тоже не в курсе

. А после этого натыкать на шарик штук 8 контрольных точек, каждую из которых обрабатывать отдельно, но совместно... однако возникает проблемма маленьких растров, которые могут случайно пройти насквозь шарика, не попав на эти контрольные точки.