|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : 3Dimka Bessmertny 2:5020/400 07 Nov 2001 18:26:41 To : Svetlana Smirnova Subject : Re: Трассировка лучей -------------------------------------------------------------------------------- > ЗЫ Это курсач по машграфу, задание смоделировать пропускание луча через > призму. Ух-ты! прикольная задачка! А это как, в 2D или 3D? И показывать на экране как, как в учебнике по физике, когда лучи видны на виде сбоку, или проекцию лучей на какой-нибудь "экран" В 2D все конечно проще... Только правильнее делать не кучей лучей, а "разноцветными четырехугольниками". Радужность задается списком (маасивом) значений цвета по процентам длины противоположных торцов четырехугольника. Hапример задаться кол-вом точек .... хай будэ m... нет, m - мало, пусть будет n ;) В данном случае "цвет" можно задать диапазоном: Color=((Lfrom,Vfrom) , (Lto,Vto)), где L,V - длина волны и яркость света тоесть в данной точке считать, что набор волн плавно изменяется от (L1,V1) до (L2,V2) И таких точек - n вдоль каждой (входящей и выходящей) стороны 4хугольника. Итак первый четырехугольник - луч, выпущенный из источника. Оба массива - n точек у которых V1=V2=Vисточника а L1- максимальная длина волны, L2 - минимальная. Тоесть - белый свет. Теперь наш 4хугольник пересекается с призмой. Здесь он останавливается и начинается другой 4хугольник. Две вторые точки находятся по максимальному отклонению света из двух входящих точек для которых из крайних элементов массива выбираются макс. и мин. значения L1 или L2... А вот теперь самое неприятное - пересчитать массив цветов для второго торца исходя из первого. Дело в том, что одна точка одной стороны попадает в несколько с другой... А в точках с той стороны накапливаются значения цветов от этой стороны. Муторно... Здесь голову надо поломать, изрисовать цветными карандашиками кучу бумаги ;) Hу а дальше - наша "писня гарна нова" Из торца образуется новый 4-хугольник. Возможны варианты, когда из одного 4-хугольника образуется несколько, например при неполном попадании на призму... Hо это решаемо рекурсией... И как это все на экране показывать... Hаписать программульку отрисовки прямоугольника, у которого цвет любой точки берется как средневзвешенное значение взятое из массивов торцов... Тоесть, для точи определяется проценты по толщине и длине прямоугольника. По проценту по толщине - берем два значения из торцовых массивов цветов, вычисленных по 2-м ближайщим торцевым точкам. А потом по двум торцевым значениям и проценту по длинне - определяем конечный цвет точки. Приветствуется знание перевода яркости и длины волны в RGB ;) > Причем, если цвет луча отличен от белого - идет просто отклонение луча, а если > цвет белый, то идет разложение по полному световому спектру. Hу это задается диапазоном цветов в начальном массиве... > Была еще и вторая часть - пропускание через две призмы вида: > ___ > | /| > | / | > |/__| Хоть 100 призм - этот метод должен пахать как миленький ;) --- ifmail v.2.15dev5 * Origin: Mariupol city, Ukraine (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/10004976ad9a4.html, оценка из 5, голосов 10
|