【Notes_8】现代图形学入门——几何(基本表示方法、曲线与曲面)
几何
几何表示
隐式表示
不给出点的坐标,给数学表达式
优点 可以很容易找到点与几何之间的关系
缺点 找某特定的点很难
更多的隐式表示方法
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】现代图形学入门——几何(基本表示方法、曲线与曲面)的更多相关文章
- 30分钟入门Java8之方法引用
30分钟入门Java8之方法引用 前言 之前两篇文章分别介绍了Java8的lambda表达式和默认方法和静态接口方法.今天我们继续学习Java8的新语言特性--方法引用(Method Referenc ...
- 【Notes_1】现代图形学入门——计算机图形学概述
跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 计算机图形学概述 计算机图形学是一门将模型转化到屏幕上图 ...
- 用OpenGL进行曲线、曲面的绘制
实验目的 理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条 ...
- NURBS 曲线和曲面参数化
NURBS 曲线和曲面参数化 什么是参数? 参数是曲线或曲面上点的唯一数值(类似于坐标).通过参数,可以沿曲线的长度方向引用特定点.参数值越大,点在曲线方向上的距离越远. 就像空间中的点具有三个维度( ...
- OpenGL超级宝典笔记——贝塞尔曲线和曲面(转)
http://my.oschina.net/sweetdark/blog/183721 参数方程表现形式 在中学的时候,我们都学习过直线的参数方程:y = kx + b;其中k表示斜率,b表示截距(即 ...
- 【Notes】现代图形学入门_02
跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 光栅化 着色(Shading) 在图形学中,着色的定义可 ...
- Node.js进阶:5分钟入门非对称加密方法
前言 刚回答了SegmentFault上一个兄弟提的问题<非对称解密出错>.这个属于Node.js在安全上的应用,遇到同样问题的人应该不少,基于回答的问题,这里简单总结下. 非对称加密的理 ...
- 图形学入门(3)——区域填充算法(region filling)
继续图形学之旅,我们已经解决了如何画线和画圆的问题,接下来要解决的是,如何往一个区域内填充颜色?对一个像素填充颜色只需调用SetPixel之类的函数就行了,所以这个问题其实就是:如何找到一个区域内的所 ...
- 图形学入门(1)——直线生成算法(DDA和Bresenham)
开一个新坑,记录从零开始学习图形学的过程,现在还是个正在学习的萌新,写的不好请见谅. 首先从最基础的直线生成算法开始,当我们要在屏幕上画一条直线时,由于屏幕由一个个像素组成,所以实际上计算机显示的直线 ...
随机推荐
- JD价格监控【docker版】
快过年了,准备买些年货,于是频繁刷购物网站对比价格,搞得还是挺头大的.我想能不能做个应用抓取实时价格并在低于预期价格后进行提醒,于是就有了本篇文章.本文主要分享怎么将本地项目打包成镜像并推送到dock ...
- Ubuntu18.04系统设置为中文语言
1.选择右上角设置按钮 2.管理已安装的语言 3.安装简体中文 安装好后是这样的 会发现汉语中文那一块是灰色的,怎么点都点不亮 4.拖拽 汉语(中国) 到最顶边 然后应用 5.重启 然后就出现这个画面 ...
- 分层图最短路( LYOi Online Judge 初中的最后一天)
代码参照: LYOI Online Judge #374. 初中的最后一天 分层图最短路模板题 1 #include<iostream> 2 #include<cstdi ...
- 【poj 2478】Farey Sequence(数论--欧拉函数 找规律求前缀和)
题意:定义 Fn 序列表示一串 <1 的分数,分数为最简分数,且分母 ≤n .问该序列的个数.(2≤N≤10^6) 解法:先暴力找规律(代码见屏蔽处),发现 Fn 序列的个数就是 Φ(1)~Φ( ...
- 【poj 2891】Strange Way to Express Integers(数论--拓展欧几里德 求解同余方程组 模版题)
题意:Elina看一本刘汝佳的书(O_O*),里面介绍了一种奇怪的方法表示一个非负整数 m .也就是有 k 对 ( ai , ri ) 可以这样表示--m%ai=ri.问 m 的最小值. 解法:拓展欧 ...
- .net core mvc 获取Web根目录和内容根目录的物理路径
从ASP.NET Core RC2开始,可以通过注入 IHostingEnvironment 服务对象来取得Web根目录和内容根目录的物理路径,如下所示: using Microsoft.AspNet ...
- rabbitMq学习一
1.安装rabbitmq Windows下安装 首先,我们访问官网[https://www.rabbitmq.com/],点击Get Started. 选择下载安装,由于RabbitMQ使用Erlan ...
- kubernetes进阶(一) kubectl工具使用详解
管理k8s核心资源的三种基本方法: 一.陈述式-主要依赖命令行工具 --可以满足90%以上的使用场景,但是缺点也很明显: 命令冗长,复杂,难以记忆 特定场景下,无法实现管理需求 对资源的增.删.查操 ...
- SOHO 程序员
SOHO 程序员:从事程序开发.维护的家居办公人员. 一.自由程序员 SOHO程序员代表一种自由.弹性而新型的工作方式.SOHO,代表一种新经济.新概念. 是一些热爱软件开发的一族. SOHO程序员 ...
- WSL2+Terminal+VScode配置调试
最近几天一直想找个方法把VMware虚拟机和远程连接工具MobaXterm这一组配合替换掉,因为每次开启虚拟机操作Ubuntu都需要占用很大的内存,而且要等好久好久才能开启!!!后面还要使用MobaX ...