小编Rpr*_*eda的帖子

如何计算圆柱体表面的法线?

我正在研究光线追踪器,并开始向场景中添加圆柱体。我遇到的问题是找到光线击中点的表面法向量。我需要这个才能进行漫射照明。此时我所拥有的是相机光线撞击圆柱体的 3d 点,以及由中心轴上的点定义的实际圆柱体,向量代表轴的方向和半径。所以总结一下我的问题,如何找到具有圆柱体撞击点、半径、其轴上的点和轴的方向向量的点的法线向量?

math raytracing lighting vector-graphics

6
推荐指数
1
解决办法
1万
查看次数

为什么一个空的printf允许我继续从stdin读取数据?

while (1)
    {
        keycode = key_hook();
        if (keycode == SPACE || keycode == BKSPACE)
        {
            render_again = 1;
        }
        if (keycode == ESC)
            break;
        if (render_again)
        {
            render_again = 0;
            render(all);
        }
        dprintf(1, "");      //I have no idea why this prevents the program from freezing
    }
    int key_hook()
    {
     char buffer[4];

     read(0, buffer, 4);
     return (*(unsigned int *)buffer);
    }
Run Code Online (Sandbox Code Playgroud)

好吧,所以这段代码处理重绘屏幕上的文本.某些文本行使用下划线或突出显示termcaps (tputs(tgetstr("us, NULL")......).一切都打印得很好,但在第一次重新绘制文本后,显然会冻结,除非dprintf/printf存在.该key_hook函数只是读取4 bytes距离stdin,并将其转换为int.

c terminal termcap

5
推荐指数
1
解决办法
161
查看次数

标签 统计

c ×1

lighting ×1

math ×1

raytracing ×1

termcap ×1

terminal ×1

vector-graphics ×1