下面是该章前面的链接:
Computer Graphics From Scratch-《从零开始的计算机图形学》简介
Chapter 1
Introductory Concepts-介绍性概念
光线追踪器和光栅器采用非常不同的方法将 3D 场景渲染到 2D 屏幕上。但是,这两种方法都有一些共同的基本概念。
在本章中,我们将探索画布,我们将在其上渲染图像的抽象表面; 我们将用来引用画布上像素的坐标系; 如何表示和操纵颜色; 以及如何描述 3D 场景以便我们的渲染器可以使用它。
一、画布
在本书中,我们将在画布上绘制东西:一个可以单独着色的矩形像素阵列。 这幅画布是显示在屏幕上还是印在纸上与我们的目的无关。我们的目标是在 2D 画布上表示 3D 场景,因此我们将专注于渲染到这个抽象的矩形像素阵列。
我们将使用一个非常简单的函数来构建本书中的所有内容,它将颜色分配给画布上的像素:
canvas.PutPixel(x, y, color)
此方法具有三个参数:x 坐标、y 坐标和颜色。 现在让我们关注坐标。
1.1. 坐标系
画布有一个宽度和一个高度,以像素为单位,我们称之为 Cw
和 Ch
。 我们需要一个坐标系来引用它的像素。 对于大多数电脑屏幕来说,原点在左上角; x
向屏幕右侧增加,y
向底部增加,如图 1-1 所示。
图 1-1:大多数计算机屏幕使用的坐标系
由于视频内存的组织方式,这个坐标系对于计算机来说非常自然,但对于人类来说,它并不是最自然的。 相反,3D 图形程序员倾向于使用通常用于在纸上绘制图形的坐标系:原点在中心,x 向右增加,向左减少,而 y 向顶部增加,向下减少,如 在图 1-2 中。
图 1-2:我们将用于画布的坐标系
使用这个坐标系,x坐标的范围是 [ − C w / 2 , C w / 2 ) [-Cw/2,Cw/2) [−Cw/2,Cw/2)
y坐标的范围是 [ − C h / 2 , C h / 2 ) [- Ch/2,Ch /2) [−Ch/2,Ch/2)
让我们假设对这些范围之外的坐标使用 PutPixel
函数什么