на самом деле макрос не нужно было раскрывать. версия выше прикреплённая с этим макросом прекрасно справляется. хотя вот для jerri и Destr`а оно будет полезным, наверное.
У меня же пока совсем другие вопросы. Например, есть два основных материала по теме рейкаста:
1. http://zxpress.ru/article.php?id=8482 (тут просто читаемость лучше, чем на zxdn)
2. http://permadi.com/1996/05/ray-casti...e-of-contents/
собственно говоря, первый составлен на основе второго. при этом есть ещё и:
3. http://lodev.org/cgtutor/raycasting.html
подходы в них кажутся разными и в то же время одинаковыми. Если следовать материалам permadi, то там многовато процедур получается, не факт что быстро. Но при этом, я встал на теме синусов и тангенсов. Да да, в школе я часто прогуливал уроки... Во всех материалах требуется работа с float/double. допустим, я напилил табличку тангенсов (для Xa=64/tan(угол луча) ):
табличка с данными в 16 бит (не страшно). А вот что с этими данными дальше делать, если всё и везде float?Код:fprintf(out, "\n\n\nTan256Table:\n"); for(k = 0; k <= 180; k++) { if((k % 8) == 0) fprintf(out, "\n dw "); else fprintf(out, ","); temp = 64 / fabs(tan(k * (PI / 180))); fprintf(out, "%5.0d", (int)temp); }




Ответить с цитированием