文章列表

26k23 分钟

# 基本光栅图形的生成 # 直线的生成算法 画一条从 (x1,y1)(x_1, y_1)(x1​,y1​) 到 (x2,y2)(x_2, y_2)(x2​,y2​) 的直线。实质上是一个发现最佳逼近直线的像素序列,并填入色彩数据的过程。这一过程称为直线的光栅化。 # DDA 算法 DDA(Digital Differential Analyzer)算法是一种基本的直线生成算法。它的基本思想是:直线的起点坐标为 P1(x1,y1)P_1(x_1, y_1)P1​(x1​,y1​),终点坐标为 P2(x2,y2)P_2(x_2, y_2)P2​(x2​,y2​),xxx 和 yyy 的增量分别为
34k30 分钟

# Java 概述 # Java 语言的主要特点 简单性 面向对象 跨平台 安全性 多线程 动态性 # 初始 Java 程序 Java 源文件以 “java” 结尾,此文件中最多只能有一个类被声明为 public,保存时源文件名需与 public 类名相同,如果文件中不存在 public 类,源文件名无要求。 一个源文件包含几个类就可以编译出几个.class 文件。 # 基本程序设计 # 常量 符号常量: final 修饰的变量,一旦赋值后不可更改。 # 类型转换 # 位运算 运算符 用法 说明 ~ ~a 按位取反 & a & b 按位与 | a
52k47 分钟

# 引论 # 什么是编译程序 # 编译程序 编译程序是翻译程序的一种,它将高级语言程序翻译成等价的目标程序。编译程序的输入是高级语言程序,输出是目标程序。编译程序的主要任务是将源程序翻译成目标程序,使得目标程序能够在计算机上正确运行。 # 解释程序 以源程序为输入,直接执行源程序,不生成目标程序。解释程序的主要任务是解释源程序,使得源程序能够在计算机上正确运行。 # 编译程序与解释程序的区别 根本区别:是否生成目标程序。 # 编译系统的组成 编译程序 运行系统 支持环境 运行库 # 编译过程与编译程序的组织结构 # 编译过程 自然语言的翻译 编译 识别出句子中的单词 词
2.7k2 分钟

本实验为 NJU 编译原理实验 1 # 实验要求 通过标准错误输出( stderr , 如 System.err 等), 打印程序的所有运行结果。 对于包含词法错误的文件,需要打印所有错误信息,格式为: Error type A at Line [lineNo]:[errorMessage] 对于没有任何词法错误的文件,打印所有识别到的 Tokens 信息 # .g4 文件编写 按照 SysY 词法规则来编写即可,这里不再赘述。 # 代码实现 在 Main.java 中,我们需要实现 main 函数,读取文件,进行词法分析,并输出结果。 // 通过标准错误输
54k49 分钟

# 算法概述 # 算法的定义 算法是由若⼲条指令组成的有穷序列 # 算法的性质 输入、输出、确定性、有限性 # 程序与算法的区别 程序是算法用某种程序设计语言的具体实现 程序可以不满足算法的有限性 # 问题求解 # 算法复杂度 # 复杂性的计量 C=F(N,I,A)  ⟹  T=T(N,I),S=S(N,I)C = F(N,I,A) \implies T = T(N,I), S = S(N,I) C=F(N,I,A)⟹T=T(N,I),S=S(N,I) 其中,NNN 为问题规模,III 为问题的输入,A
3.1k3 分钟

# 作业要求 完善以下函数: //Renderer.cppRender()// 这里你需要为每个像素生成一条对应的光线, // 然后调用函数 castRay () 来得到颜色, // 最后将颜色存储在帧缓冲区的相应像素中。//Triangle.hpprayTriangleIntersect()//v0, v1, v2 是三角形的三个顶点, //orig 是光线的起点,dir 是光线单位化
2.1k2 分钟

# 作业要求 完善以下函数: bezier// 该函数实现绘制 Bézier 曲线的功能。它使用一个控制点序列和一个 OpenCV::Mat 对象作为输入,没有返回值。它会使 t 在 0 到 1 的范围内进行迭代,并在每次迭代中使 t 增加一个微小值。对于每个需要计算的 t,将调用另一个函数 recursive_bezier,然后该函数将返回在 Bézier 曲线上 t 处的点。最后,将返回的点绘制在 OpenCV ::Mat 对象上。recursive_bezier// 该函数使用一个控制点序列和一个浮点数 t 作为输入,实现 de Casteljau
5.6k5 分钟

# 作业要求 完善以下函数: rasterize_triangle(const Triangle& t) // 在此处实现与作业 2 类似的插值算法,实现法向量、颜色、纹理颜色的插值。get_projection_matrix() // 将你自己在之前的实验中实现的投影矩阵填到此处,此时你可以运行./Rasterizer output.png normal 来观察法向量实现结果。phong_fragment_shader() // 实现 Blinn-Phong 模型计算 Fragment Color.texture_
4.8k4 分钟

# 作业要求 完善以下函数: rasterize_triangle(): 执行三角形栅格化算法static bool insideTriangle(): 测试点是否在三角形内。你可以修改此函数的定义,这意味着,你可以按照自己的方式更新返回类型或函数参数。# 作业实现 # 测试点是否在三角形内 把给出的点与三角形的三个顶点分别做叉乘,如果这三个叉乘的结果符号相同,那么这个点在三角形内。 static bool insideTriangle(const float x, const float y, const Vector3f *_v) { const Eigen::Vector
2.2k2 分钟

# 作业要求 完善以下函数: get_model_matrix(float rotation_angle): 逐个元素地构建模型变换矩阵并返回该矩阵。在此函数中,你只需要实现三维中绕 z 轴旋转的变换矩阵,而不用处理平移与缩放。get_projection_matrix(float eye_fov, float aspect_ratio, float zNear, float zFar): 使用给定的参数逐个元素地构建透视投影矩阵并返回该矩阵。在 main.cpp 中构造一个函数,该函数的作用是得到绕任意过原点的轴的旋转变换矩阵。Eigen::Matrix4f get_rotation(Vec