计算机图形学

计算机图形学

光追一般指光线追踪。 光线跟踪(也叫ray tracing或者光束投射法)。是一个在二维(2D)屏幕上呈现三维(3D)图像的方法。

BRDF是双向反射分布函数(Bidirectional Reflectance Distribution Function,BRDF)

用来定义给定入射方向上的辐射照度(irradiance),如何影响给定出射方向上的辐射率(radiance)。

更笼统地说,它描述了入射光线经过某个表面反射后如何在各个出射方向上分布

——这可以是从”理想镜面反射”到”漫反射”、”各向同性(isotropic)”或者”各向异性(anisotropic)”的各种反射。

发光强度的主观感受

本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

辉度是对(消色)发光强度的主观感受,或”一个视感觉的属性,对应区域发射光线的多少”。

辉度用以说明表面辐射光的强度。它与我们看发光面的感受相关,同样,计量也与眼睛看表面的视角相关。

中文名辉度因 素我们看发光面的感受

亮度(Luminance)

亮度(Luminance,L)单位:坎德拉每平方米(cd/㎡)一光源或一被照面之辉度指其单位表面在某一方向上的光强度密度,也可说是人眼所感知此光源或被照面之明亮程度。

台湾早期受日本照明术语的影响,老一辈的习惯称”辉度”(汉字),新一辈的习惯直接翻自英文Brightness叫”亮度”,单位便是cd/㎡(nit),footlambert。前者为公制,后者为英制。

双缓存技术double buffer:为了获得平滑的动画效果,需要先在内存中生成下一幅图像,然后把已经生成的图像从内存复制到屏幕上;

OpenGL(英语:Open Graphics Library,译名:开放图形库或者”开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。

拓扑等价如果其中任一个可以通过拓扑变换从其余图形得到,就称它们为拓扑等价的,或称几个图形,其中每一个可以从其余任一个图形经扭转、弯曲、拉长或收缩得到,而不出现任何点的重叠与断开,它们就是拓扑等价的。

正则集合运算:能够产生正则形体的集合运算称为正则集合运算。

正则集合运算 包括正则并(∪)、正则交(∩)、正则差(—*)。

正则形体(正则体)为了保证几何造型的可靠性和可加工性,要求形体上任何一点的足够小的领域在拓扑上应是一个等价的封闭圈,即围绕该点的形体邻域在二维空间中可构成一个单连通域,我们把满足这个定义的形体成为正则形体。

实体表面特性

有效实体的特性

开集与闭集/正则集(开集的闭包)

闭包=闭集=正则集

实体:三维空间中的物体是空间中点的集合(点集拓扑理论)。三位空间中点集的正则集就是三维正则形体,也就是有效的实体。

闭包:一个开集的闭包是该开集与其所有边界点集合的并集,闭包本身是一个闭集。

组成一个三位物体的点集可以分为内部点和边界点两部分。

正则集:由内部点构成的点集的闭包就是正则集。

元组是包含多个字段以表示数据成员的轻量级数据结构。

光栅由大量等宽等间距的平行狭缝构成的光学器件称为光栅(grating)。一般常用的光栅是在玻璃片上刻出大量平行刻痕制成,刻痕为不透光部分,两刻痕之间的光滑部分可以透光,相当于一狭缝。精制的光栅,在1cm宽度内刻有几千条乃至上万条刻痕。

计算机图形学:使用计算机通过算法和程序在显示设备上构造出图形来。

在数学上,理想的直线是没有宽度的,由无数个点构成的集合。我们只能在显示器所给定的有限个像素组成的矩阵中,确定最佳逼近于该直线的一组像素,并且按照扫描顺序,用当前的写方式,对这些像素进行写操作。

在光栅显示器的荧光屏上生成一个对象,实质是往帧缓冲寄存器的相应单元中填入数据。

直线光栅化:画一条从(x1,y1)(x2,y2)的直线(注意:这里的坐标是显示器的坐标,以像素为单位,也可称为设备坐标),实质上是一个发现最佳逼近直线的像素序列,并填入色彩数据的过程。这个过程也称为直线光栅化。

#include<cmath>
#include<windows.h>
using namespace std;

HWND consoleWindow = GetConsoleWindow(); // Get a console handle
HDC consoleDC = GetDC(consoleWindow);// Get a handle to device context
void CDraw::drawLine(int xa,int ya,int xb,int yb,int c)
{
    int dx, dy,steps;
    float deltaX, deltaY, x, y;
    if (ya == yb)//&#x6C34;&#x5E73;&#x7EBF;
    {
        dx = xb - xa;
        steps = abs(dx);
        deltaX = (float)dx / (float)steps;
        x = xa; y = ya;
        SetPixel(consoleDC, x, y, c);
        for (size_t i = 1; i <= steps; i++) { x +="deltaX;" setpixel(consoledc, x, y, c); } return; if (xa="=" xb) 垂直线 dy="yb" - ya; steps="abs(dy);" deltay="(float)dy" (float)steps; y="ya;" for (size_t i="1;" <="steps;" 斜线 dx="xb" xa; (abs(dx)> abs(dy))steps = abs(dx);
    else steps = abs(dy);
    deltaX = (float)dx / (float)steps;
    deltaY = (float)dy / (float)steps;
    x = xa; y = ya;

    SetPixel(consoleDC,x,y,c);
    for (size_t i = 1; i <=steps; i++) { x +="deltaX;" y setpixel(consoledc, x, y, c); } 绘制矩形框 void cdraw::drawrect(int minx, int miny, maxx, maxy, c) drawline(minx, drawline(maxx, 绘制区域 cdraw::drawregion(int for (int <="maxX;" x++) maxy; y++) setpixel(consoledc,x,y,c); }< code></=steps;></=></windows.h></cmath>
void CDraw::drawCircle(int cx, int cy, int r, int c)
{
    int r2 = r * r; double sq;
    for (int x = 0; x <= r; x++) { sq="sqrt(r2" - x * x); setpixel(consoledc, cx + x, cy sq, c); } }< code></=>

该方法所画的原型,当X远离圆心时,点越来越稀疏

//&#x76F4;&#x89D2;&#x5750;&#x6807;&#x6CD5; &#x753B;&#x5706;
void CDraw::drawCircle(int cx, int cy, int r, int c)
{
    int r2 = r * r; double sq;
    for (int x = 0; x

Original: https://www.cnblogs.com/zhangdezhang/p/16602890.html
Author: 张德长
Title: 计算机图形学

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612693/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 记一次stormOOM异常的产生与解决

    最近这段时间开始了一个新项目,项目使用rabbitMQ存储采集数据,通过storm对rabbitMQ中的数据进行实时计算,将结果存入到rabbitMQ的另一个队列中,再由另外一个s…

    数据库 2023年6月6日
    077
  • 11、ON DUPLICATE KEY UPDATE实现插入更新操作

    一、插入与更新操作: MySQL中,采用ON DUPLICATE KEY UPDATE语句对不存在的数据进行INSERT插入操作,对已存在的数据进行UPDATE更新操作; 总结: …

    数据库 2023年6月6日
    060
  • Redis的Java客户端

    Redis 的 Java 客户端 Jedis 优点:以 Redis 命令作为方法名称,学习成本低廉,简单且实用 缺点:Jedis 的实例是线程不安全的,在多线程的环境下需要基于线程…

    数据库 2023年6月16日
    089
  • Office直通车

    数据库篇 数据库架构 为什么要使用索引? 对于数据量较大的表,建立索引避免全表扫描,能够提高查询速度,提高效率 什么样的信息能成为索引? 主键、唯一键、普通键 索引数据结构? 主流…

    数据库 2023年6月6日
    0281
  • 0. 数据库设计规范化

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    数据库 2023年5月24日
    072
  • clash TUN模式

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月14日
    084
  • 如何写出有效的单元测试

    测试不要名不副实避免测试的描述与测试内容不符;测试结果必须精准;测试该失败的时候一定要失败! 测试私有或者受保护的方法解决思路: 将方法变成公共方法; 将方法抽取到新类; 将方法变…

    数据库 2023年6月14日
    098
  • Tomcat配置文件Server.xml解析

    一、Sax的事件驱动模型 类图 基础实现类 DefaultHandler2: 此类扩展了SAX2基本处理程序类,以支持SAX2 LexicalHandler , DeclHandl…

    数据库 2023年6月11日
    057
  • 【黄啊码】MySQL入门—1、SQL 的执行流程

    大家好!我是黄啊码,鉴于大家对于学习的热情,从今天起,将连载mysql的相关知识,需要学习的可以注意我的更新学习,后期估计会开启付费专栏,但当前完全可以白嫖,希望大家珍惜! 首先我…

    数据库 2023年6月16日
    080
  • 第二十章 AOP开发中的坑

    问题 //在同一个业务类中,一个业务方法调用另一个业务方法 //问题: login方法添加有额外功能 // register方法没有添加额外功能 public class User…

    数据库 2023年6月14日
    071
  • 电脑必须打开的设置

    电脑性能设置 优化设置一:开启卓越性能 其实,win10系统中有一个卓越性能的隐藏设置,它可以让我们的电脑,在现有配置的情况下,发挥出最优良的性能。 1、 同时按住”w…

    数据库 2023年6月14日
    0106
  • 生产数据库主键超出限制解决方案

    不说那种建表的时候 设置好主键格式 的 解决方案. 事后诸葛啊. 谁都会 不靠谱方案1改主键表结构. 费时! 主键已经超长了.说明 数据量相当大. 改表结构的时间成本你能等得起吗方…

    数据库 2023年6月14日
    087
  • mysql约束

    一、表约束 PK主键约束(索引)唯一约束 非空 默认值 在关系数据库,一个表中,只能有一个主键(Primary Key),有些数据库没有pk,系统报出错误。 在myql数据库,建立…

    数据库 2023年6月9日
    083
  • 设计模式在业务系统中的应用

    本文的重点在于说明工作中所使用的设计模式,为了能够更好的理解设计模式,首先简单介绍一下业务场景。使用设计模式,可以简化代码、提高扩展性、可维护性和复用性。有哪些设计模式,这里就不再…

    数据库 2023年6月14日
    075
  • Linux安装 MySQL

    一、下载yum仓库 1、说明:mysql官方提供所有版本的仓库,要使用yum方式安装的话需要提前下载该仓库列表 2、官方下载链接:https://dev.mysql.com/dow…

    数据库 2023年6月9日
    083
  • leetcode 110. Balanced Binary Tree 平衡二叉树(简单)

    一、题目大意 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入…

    数据库 2023年6月16日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球