架构师的抽象思维
每个人都应该学习编程,因为他能教会你怎样思考---Steve Jobs(乔布斯)
-
架构师 核心能力:抽象思维和抽象能力 宏观的全局掌控能力
-
工程师 软件工程
-
搬砖师(码农) 编写代码
代码质量的评判维度
可阅读性 可扩展性/可维护性 可测试性 可复用性
像素,图像
矢量: 具有数学表达的几何图像
光栅化:将几何图形转换为光栅像素的表达
画一条线段
DDA算法(数字微分分析法
- 直线 y = mx + h满足微分方程 dy/dx = m Dy/Dx = (y2 -y1)/(x2 - x1)
- 沿扫描线 Dx = 1
for(x = x1; x <= x2; x++ ){
y += m;
write_pixel(x, round(y));
}
斜率大的算法
- Bresenham算法
- DDA算法中每一步需要一次浮点加法
- 在Bresenham算法中可以不出现任何浮点运算
- 只考虑0 <= m <= 1 的情形(其它情形利用对称性处理)
- 假设像素中心在半整数处
- 如果从一个已被确定激活的像素出发,那么下一像素的可能位置只会出现两种可能
增量形式
硬件实现
线段的光栅化已成熟,并已由硬件实现 GDI Moveto(x,y) Lineto(x,y)
多边形区域的光栅化
多边形区域的填充: 区域内部的像素点
问题: 如何决定封闭多边形的内外
一些特殊的情况
多边形区域的光栅化已成熟,并已由硬件实现
光滑曲线的光栅化
反走样
- 锯齿现象
- 加灰度
课程说明: 中国科学技术大学数学科学学院的刘利刚老师于2020年春(疫情期间线上授课)讲授的本科生课程《计算机图形学》(课程编号:00106501)的录屏。 课程主页: staff.ustc.edu.cn/~lgliu/Cour…