几何

几何表示

隐式表示

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

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

缺点 找某特定的点很难

更多的隐式表示方法

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. UML——关系

     一.宏观导图: 二.细节 1.关联:指的是类与类之间的结构性关系,即整体-部分关系.一般的关联关系中有单向的和双向的. 特殊关联中的,有聚合和组合,其实我更愿意用英文去理解,这些人翻译的让我很恶 ...

  2. Java程序操作Hive

    1.hive的lib+jdbc,还要把mysql的连接驱动加载过来 2.编写程序 开启远程服务:[root@zhiyou ~]# hiveserver2 &[1] 4127[root@zhiy ...

  3. Codeforces Round #625 Div. 2 D E

    D题:https://codeforces.com/contest/1321/problem/D 题意:题目给个有向图,然后给一段序列,我们要沿着这个序列走,问走的过程中当前点到t的最短路会重构多少次 ...

  4. 牛客NC15879 A Simple Problem

    传送门:A Simple Problem 题意 给定两个序列s1和s2,同样的数字可以用相同的别的数字代替(并且也可以是出现过的数字),问s2在s1中出现了几次. 题解 首先预处理一下这两个序列,因为 ...

  5. Round Numbers POJ - 3252

    题意: 如果你个数的二进制中1的个数要小于等于0的个数,那么这个数就符合题意.现在要你找出来区间[li,ri]这个区间内有多少这样的数 题解: 题意很明显了,是要用二进制,所以我们也把给的区间边界转化 ...

  6. Linux-单用户/救援模式

    目录 企业案例一:忘记root密码 企业案例二:修改了默认的运行级别为poweroff或者reboot 企业案例三:误损坏MBR(只能以救援模式解决) 企业案例四:误删除GRUB菜单(只能以救援模式解 ...

  7. 手撕 part1

    1.宏定义三个数最大值 挺有意思 max((a), (b), (c)) (a) > (b)? ((a) > (c)? (a) : (c)) ((b) > (c)? (b) : (c) ...

  8. 杭电多校HDU 6601 Keen On Everything But Triangle(主席树)题解

    题意: 有\(n\)根长度不一的棍子,q次询问,求\([L,R]\)区间的棍子所能组成的周长最长的三角形.棍长\(\in [1, 1e9]\),n\(\in [1, 1e5]\). 思路: 由于不构成 ...

  9. 快速搞懂.NET 5/.NET Core应用程序的发布部署

    .NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...

  10. Vue & Sentry & ErrorHandler

    Vue & Sentry & ErrorHandler import * as Sentry from '@sentry/browser'; import { Vue as VueIn ...