const и модификатора * ты у читателя украл около секунды времени. Лично мне сейчас, да и практически всем инженерам в таких случаях, приходится вчитываться в странное слово между char и c_ptr.IntList1D &list, где ты приклеиваешь модификатор к имени. А вот сейчас в коде char *const c_ptr что ты можешь приклеить к имени? А ничего. И выходит что у тебя оформление кода неоднозначное, заставляет все время вчитываться. И чтение твоего кода заставляет тратить на это значительно больше времени чем чтение профессионального кода.char* const c_ptr.cast_ray просто скачет пикселями, а не чертит прямую. А ведь про алгоритм Брезенхама описывается в статьях что я привел.y = ax + b, из чего довольно легко выводится параметрическая запись с зависимостью от точки начала и вектора направления. Далее луч никуда бросать не надо, надо просто определить, хоть полным перебором, какие объекты сцены пересекают этот луч, найти точку проекции, посчитать направление отражения и определить, виден ли отраженный луч в камере. И это все описано в приведенных мной статьях. В цикле OpenGL тонкости трассиновки буквально разжевываются.(0, 0, 0). У тебя там источник света? Или у тебя там камера?Интересует рабочий код, могу даже заплатить .
using namespace [?] говорит что в дальнейшем коде нужно использовать все обозначенное пространство имен в задачах поиска неквалифицированных имен (т.е. UNL).using namespace std; дает UNL доступ ко всему пространству имен стандартной библиотеки, часть имен которого не описана стандартом и присутствует только в конкретной реализации STL. В результате ты рискуешь случайно вызвать что-то из недр STL путем простой описки в имени.swap [?].using namespace std; ты можешь ознакомиться в недавней статье на хабре. using namespace std;?
Я тебе даже совет дам полезный, пробегись по моим ответам и почитай тексты вопросов чтобы набрать примерное понимание того, когда вопрос является достаточно информативным чтобы его получилось решить. Вот например.