на самом деле макрос не нужно было раскрывать. версия выше прикреплённая с этим макросом прекрасно справляется. хотя вот для 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(угол луча) ):
Код:
  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);
  }
табличка с данными в 16 бит (не страшно). А вот что с этими данными дальше делать, если всё и везде float?