Rust 光线追踪 04: 显示球体的法线

法线的定义是垂直于面的向量。对于一个球体来说,法线的向量,就是球上某个点,减去球心坐标,所得到的向量。 ...

November 21, 2021 · 2 min · 猫猫

Rust 光线追踪 03: 渲染一个圆

下面的公式有点多,只是把原教程中的公式详细展开了,一步一步来,很简单,相信我。 给定一个点,判断一个点是否在一个半径为 $R$ 的圆或者圆外、圆内,我们可以使用下面的公式来判断。这里假设圆心在 $(0,0,0)$ 点,半径为 $R$ 如果一个点 $(x, y, z)$ 在圆上,则 $x^2 + y^2 + z^2 = R^2$ 如果一个点 $(x, y, z)$ 在圆内,则 $x^2 + y^2 + z^2 < R^2$ 如果一个点 $(x, y, z)$ 在圆外,则 $x^2 + y^2 + z^2 > R^2$ 假设圆心在点 $C = (C_x, C_y, C_z)$,半径为 r,则根据上面的第一个公式,可以得到 $(x - C_x)^2 + (y - C_y)^2 + (z - C_z)^2 = r^2$ 我们可以将点 $(x, y, z)$ 使用之前的 Vec3 向量表示,例如设 $点P = (x, y, z)$,则可以将上面的公式,换一种表达形式,也就是...

November 20, 2021 · 3 min · 猫猫

Rust 光线追踪 02: 使用光线生成渐变图

这个小节的目标是添加光线相光内容,根据光线打在屏幕上不同的位置,生成一张蓝白渐变图。 ...

November 20, 2021 · 5 min · 猫猫

Rust 光线追踪 01: 输出PPM

这个系列的博客是使用 Rust 来实现 《Ray Tracing in One Weekend》相关的内容,我们把整本书拆开,来分篇实现,这们可以进一步降低难度。PPM是一个简单的图片格式,它将RGB的颜色使用 ASCII 的形式记录在文件中。 ...

November 18, 2021 · 4 min · 猫猫