几何

几何表示

隐式表示

不给出点的坐标,给数学表达式

优点 可以很容易找到点与几何之间的关系

缺点 找某特定的点很难

更多的隐式表示方法

Constructive Solid Geometry 、Distance Functions 、Level Set Methods 、Fractals

显示表示

直接给出点或者参数映射

优点 找某一点很容易

缺点 判断点与几何之间的关系很困难

更多的显式表示方法

Triangle meshes 、Bezier surfaces 、Subdivision surfaces 、NURBS 、Point clouds。

其中需要强调的一点在图形学中,显示存储在文件的格式是wavefront object file。

其中,\(v:\)顶点、\(v_n:\)法线、\(v_t:\)纹理坐标、\(f\)参数详解:(顶点坐标 纹理坐标 法线坐标)

曲线与曲面

贝塞尔曲线(Bézier Curves)

贝塞尔曲线是计算机图形图像造型的基本工具,是图形造型运用得最多的基本线条之一,是依据四个位置任意的点坐标绘制出的一条光滑曲线。

代数表示

主要是通过反复迭代实现,循环体是每两个点之间的通过特定的比例 \(t\) ,得到一个新的点;终止条件是最后只有一个点。

贝塞尔曲线性质

1. 端点性质

顶点P0和Pn分别位于曲线段的起点和终点上,曲线不通过其他控制点,即“逼近”而非“插值”。

2. 一阶导数

  • Bernstein基函数的一阶导数为
  • Bezier曲线的一阶导数为

Bezier曲线的起点和终点处的切线方向和特征多边形的第一条边及最后一条线的走向一致。

3. 几何不变性

指某些几何特性不随坐标变换而变化的特性。Bezier曲线的形状仅与控制多边形各顶点的相对位置有关,而与坐标系的选择无关。

4. 凸包性

Bezier曲线落在控制点Pi构成的凸包内

分段贝塞尔曲线

当控制贝塞尔曲线的控制点多的时候,可以通过分段生成贝塞尔曲线来实现。

贝塞尔曲线拼接

贝塞尔曲面

几何操作

曲面的几何操作主要有:曲面细分、曲面简化、曲面正则化。

曲面细分

曲面细分主要有以下两个主要的步骤:1.创建更多的面(顶点) 2.移动面(顶点)的位置

Loop Subdivision

Loop Subdivision主要是针对三角形曲面的细分

1. 创建更多的面(顶点)

2. 移动顶点的位置

Catmull

奇异点:与点相连接的边不为4的点

face point:每个面中的点,用周围点的平均值代表

曲面简化

【Notes_8】现代图形学入门——几何(基本表示方法、曲线与曲面)的更多相关文章

  1. 30分钟入门Java8之方法引用

    30分钟入门Java8之方法引用 前言 之前两篇文章分别介绍了Java8的lambda表达式和默认方法和静态接口方法.今天我们继续学习Java8的新语言特性--方法引用(Method Referenc ...

  2. 【Notes_1】现代图形学入门——计算机图形学概述

    跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 计算机图形学概述 计算机图形学是一门将模型转化到屏幕上图 ...

  3. 用OpenGL进行曲线、曲面的绘制

    实验目的 理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条 ...

  4. NURBS 曲线和曲面参数化

    NURBS 曲线和曲面参数化 什么是参数? 参数是曲线或曲面上点的唯一数值(类似于坐标).通过参数,可以沿曲线的长度方向引用特定点.参数值越大,点在曲线方向上的距离越远. 就像空间中的点具有三个维度( ...

  5. OpenGL超级宝典笔记——贝塞尔曲线和曲面(转)

    http://my.oschina.net/sweetdark/blog/183721 参数方程表现形式 在中学的时候,我们都学习过直线的参数方程:y = kx + b;其中k表示斜率,b表示截距(即 ...

  6. 【Notes】现代图形学入门_02

    跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 光栅化 着色(Shading) 在图形学中,着色的定义可 ...

  7. Node.js进阶:5分钟入门非对称加密方法

    前言 刚回答了SegmentFault上一个兄弟提的问题<非对称解密出错>.这个属于Node.js在安全上的应用,遇到同样问题的人应该不少,基于回答的问题,这里简单总结下. 非对称加密的理 ...

  8. 图形学入门(3)——区域填充算法(region filling)

    继续图形学之旅,我们已经解决了如何画线和画圆的问题,接下来要解决的是,如何往一个区域内填充颜色?对一个像素填充颜色只需调用SetPixel之类的函数就行了,所以这个问题其实就是:如何找到一个区域内的所 ...

  9. 图形学入门(1)——直线生成算法(DDA和Bresenham)

    开一个新坑,记录从零开始学习图形学的过程,现在还是个正在学习的萌新,写的不好请见谅. 首先从最基础的直线生成算法开始,当我们要在屏幕上画一条直线时,由于屏幕由一个个像素组成,所以实际上计算机显示的直线 ...

随机推荐

  1. 分布式-springboot基础入门

    B站播放地址:https://www.bilibili.com/video/BV1PE411i7CV?t=51 博客地址:https://www.cnblogs.com/hellokuangshen/ ...

  2. 设计模式(六)——建造者模式(源码StringBuilder分析)

    建造者模式 1 盖房项目需求 1) 需要建房子:这一过程为打桩.砌墙.封顶 2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 3) 请编写程序,完成需求. ...

  3. 各个复位标志解析,让我们对MCU的程序的健康更有把控

    作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述 曾经开发的时候遇到这样情况,我们开发的设备需要长时间工作上报信息,但是我们在后台查看上报数据,发现设备 ...

  4. P1387 最大正方形 && P1736 创意吃鱼法(DP)

    题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=100),接下来n行,每行m ...

  5. PowerShell随笔4---变量

    全局变量 输入$global:后按ctrl+space,我们就可以看到所有的全局变量. 比如我们可以查看PowerShell的版本: 我们可以在在编写脚本代码的时候使用这些变量,globle可以省略, ...

  6. 请问什么时候对象分配会不在 TLAB 内分配

    Java 对象分配流程 我们这里不考虑栈上分配,这些会在 JIT 的章节详细分析,我们这里考虑的是无法栈上分配需要共享的对象. 对于 HotSpot JVM 实现,所有的 GC 算法的实现都是一种对于 ...

  7. python 迭代器 iter多次消费

    问题 Python 中的迭代器是我们经常使用的迭代工具, 但其只能消费一次,再次消费便会出现 StopIteration 报错. 解决方案 封装了一个类,当迭代器使用完后再次初始化. 代码 class ...

  8. [Golang]-8 工作池、速率限制、原子计数器、互斥锁

    目录 工作池 速率限制 原子计数器 互斥锁 工作池 在这个例子中,我们将看到如何使用 Go 协程和通道实现一个工作池 . func worker(id int, jobs <-chan int, ...

  9. kubernetes实战-交付dubbo服务到k8s集群(五)交付dubbo-monitor监控服务到k8s

    首先下载 dubbo-monitor源码包7-200 dubbo-monitor是监控zookeeper状态的一个服务,另外还有dubbo-admin,效果一样,感兴趣的可以自己研究一下. # cd ...

  10. shapefile 输出的地理处理注意事项(转载)

    来源:http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#//005600000013000000 多年来,Esri 为存储地理信息 ...