You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Floor Casting算法方向相关纹理渲染异常求助

Floor Casting算法方向渲染异常问题求助

我目前使用Stack Overflow帖子《Raycaster, searching for more effective floor/ceiling raycast》中Toto Briac提出的Floor Casting算法。最初使用时,东西方向的地板渲染正常,但南北方向出现异常;后续又出现南北方向正常、东西方向纹理渲染异常的情况(见下图)。

朝向南北方向时的渲染效果

相关代码如下:

double pixelsToBottom;
double pixelsToMid;
double directDistFloor;
double realDistance;
double y;
t_point f_p;

pixelsToBottom = (double)data->s_height - wall[1].y;
pixelsToMid = (double)data->s_height / 2 - pixelsToBottom;
for (int i = pixelsToMid; i < data->s_height / 2; i += 1)
{
    directDistFloor = (data->dist_proj * (double)(data->s_height / 2)) / i;
    realDistance = directDistFloor / fabs(cos(angle));
    f_p.x = data->player.pos.x + cos(angle) * (realDistance) / (data->dist_proj / (64.0));
    f_p.y = data->player.pos.y + sin(angle) * (realDistance) / (data->dist_proj / (64.0));
    y = (wall->x + (i + data->s_height / 2) * data->s_width) / data->s_width;
    pixel_put(&data->obj, wall->x, y, f_pixel(data, f_p));
}

我发现问题出在realDistance = directDistFloor / fabs(cos(angle));这一行:将cos(angle)替换为sin(angle)会使异常方向反转,但我不清楚该如何在正确时机切换计算逻辑,恳请各位提供解决方案!

内容的提问来源于stack exchange,提问作者Samuel Janssens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:41:04