GAMES101笔记 Lecture11 Geometry 2(Curces and Surfaces)

目录

      • Explicit Representations in Computer Graphics(计算机图形学中的显式几何表示)
        • Point Cloud(点云)
        • Polygon Mesh(多边形网格)
        • The Wavefront Object File(.obj) Format(OBJ格式文件)
      • Curves(曲线)
        • Bezier Curves(贝塞尔曲线)
          • Defining Cubic Bezier Curve With Tangents(定义带切线的贝塞尔曲线)
          • Bezier Curces - de Casteljau Algorithm(贝塞尔曲线的绘制算法)
          • Evaluating Bezier Curves Algebraic Formula(贝塞尔曲线的代数表示)
          • Properties of Bezier Curves(贝塞尔曲线的性质)
          • Piecewise Bezier Curves(分段的贝塞尔曲线)
          • Piecewise Bezier Curve - Continuity(分段贝塞尔曲线的连续性)
        • Other types of splines(其它种类的样条)
      • Surfaces(曲面)
        • Bezier Surfaces(贝塞尔曲面)
      • 参考

Explicit Representations in Computer Graphics(计算机图形学中的显式几何表示)

在图形学中有许多几何的显式的表示方式:

  • Triangle meshes(三角网格)
  • Bezier surfaces(贝塞尔曲面)
  • Subdivision surfaces(细分曲面)
  • NURBS(非均匀有理B样条)
  • Point Clouds(点云)

Point Cloud(点云)

最简单的表示方式:给定一些点的集合 ( x , y , z ) (x, y, z) (x,y,z)

可以很容易表示任何形状的几何。

对于大型数据集非常有效。

通常会被转换为多边形网格。

在采样不足的区域难以绘制。

在这里插入图片描述

Polygon Mesh(多边形网格)

该方法用的最多的方法,得到了最广泛的应用。

尤其是三角形和四边形。

更容易做处理、模拟、自适应采样等。

在三角形之间的连接关系等,需要更复杂的数据结构。

在这里插入图片描述

The Wavefront Object File(.obj) Format(OBJ格式文件)

这是一种文本文件,将顶点、法线、纹理坐标分别进行表示,并存储各个顶点和面的连接关系等。

通常用于图形学的研究。

在这里插入图片描述

Curves(曲线)

Bezier Curves(贝塞尔曲线)

Defining Cubic Bezier Curve With Tangents(定义带切线的贝塞尔曲线)

给定一些控制点。

起始点和终止点一定需要在 p 0 p_0 p0 p 3 p_3 p3上。

起始点的斜率必须要在 p 0 p 1 p_0p_1 p0p1方向,终止点的斜率必须要在 p 2 p 3 p_2p_3 p2p3方向。

并不要求曲线一定经过所有控制点。
在这里插入图片描述

Bezier Curces - de Casteljau Algorithm(贝塞尔曲线的绘制算法)

考虑给定三个控制点的贝塞尔曲线(二次贝塞尔曲线)。

假定 b 0 b_0 b0是在时间 t = 0 t = 0 t=0时的点, b 1 b_1 b1是在时间 t = 1 t = 1 t=1的点。

现在问题转换为,给定任意一个时间 t ∈ [ 0 , 1 ] t \in [0, 1] t[0,1],求出这个曲面上的点应该位于哪里?

假设,现在我们需要找到 t = 1 3 t = \frac{1}{3} t=31时的点:

  1. 我们分别在 b 0 b 1 b_0 b_1 b0b1上和 b 1 b 2 b_1b_2 b1b2上找到位于 1 3 \frac{1}{3} 31位置的点,分别设为 b 0 1 b_{0}^1 b01 b 1 1 b_{1}^{1} b11
  2. 将这两个点连接起来。
  3. b 0 1 b_{0}^1 b01 b 1 1 b_{1}^{1} b11之间再找到位于 1 3 \frac{1}{3} 31位置的点。
  4. 那么这个点就是贝塞尔曲面在时间 t t t定义的点。

如果我们要画出曲线,我们只需要枚举时间 t t t即可。

这是一个递归的算法。

给定四个控制点的贝塞尔曲线做法也同理:

在这里插入图片描述

Evaluating Bezier Curves Algebraic Formula(贝塞尔曲线的代数表示)

例子:二次贝塞尔曲线

在这里插入图片描述
在这里插入图片描述
总结一下:
给定 n + 1 n + 1 n+1个控制点,可以得到 n n n阶贝塞尔曲线:

在这里插入图片描述
其中,下图中的多项式就是伯恩斯坦多项式。
在这里插入图片描述

Properties of Bezier Curves(贝塞尔曲线的性质)
  • 一定过起止点。
  • 起点和终点切线方向一定沿初始方向。
  • 在仿射变换下,直接对各个顶点做仿射变换后再画出一条贝塞尔曲线等价于直接对原始贝塞尔曲线做仿射变换。
  • 曲线一定在控制点的凸包内。
Piecewise Bezier Curves(分段的贝塞尔曲线)

考虑高阶贝塞尔曲线,可能会出现不符合实际情况的曲线:

在这里插入图片描述
我们可以通过拼接一些低阶贝塞尔曲线来解决这个问题:

在这里插入图片描述

Piecewise Bezier Curve - Continuity(分段贝塞尔曲线的连续性)
  • C 0 C^{0} C0连续: a n = b 0 a_n = b_0 an=b0第一段的终点等于第二段的起点。
  • C 1 C^{1} C1连续: a n = b 0 = 1 2 ( a n − 1 + b 1 ) a_n = b_0 = \frac{1}{2}(a_{n - 1} + b_1) an=b0=21(an1+b1)切线连续。
  • C 2 C^{2} C2连续,曲率连续。

Other types of splines(其它种类的样条)

样条:
穿过一系列给定的点,并有一定数量的连续导数。

简而言之,一个可控的曲线。
在这里插入图片描述

B样条:

在这里插入图片描述

Surfaces(曲面)

Bezier Surfaces(贝塞尔曲面)

在这里插入图片描述

参考

GAMES101 Lecture11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java】对ArrayList中的元素进行排序的几种方式

对ArrayList中的元素进行排序的几种方式 一、使用Collections工具类 1、对基本类型排序 通过Collections.sort()对基本类型排序默认是以升序排序 // 1.Collections.sort()默认按照升序排序 List<Integer> integerList new ArrayList<>(); Collections.addAll(…

访问学者面试申请如何应对?

作为一个学者面试申请者&#xff0c;面对这一重要机会&#xff0c;我们需要认真准备并采取适当的应对策略。下面知识人网小编将提供一些建议&#xff0c;帮助你在面试中取得良好的表现。 首先&#xff0c;在准备阶段&#xff0c;你应该研究并了解申请机构的背景和研究方向。了解…

CentOS7中安装docker并配置阿里云加速器

文章目录 一、docker的安装二、docker的卸载三、配置加速器四、docker-compose安装五、docker-compose卸载六、docker-compose相关命令七、常用shell组合 一、docker的安装 参考&#xff1a;https://docs.docker.com/engine/install/centos 本文内容是基于&#xff1a;CentOS L…

css 3个元素行排列,前2个元素靠左,第三个元素靠右

上效果&#xff1a; 实现方式&#xff1a; display:flex &#xff0c; 行排列&#xff0c;默认靠左对齐&#xff0c; 然后让第三个元素自动占满剩余的空间&#xff1a;flex-grow:1&#xff0c;text-align:end // wxml <!-- 支付方式--><view class"payment_…

Docker 安装 MongoDB开启认证,创建只读用户权限。

创建带认证的mongdb容器 docker run -itd --name mongo -p 27017:27017 mongo --auth --auth 就是开启mongodb权限认证。如果不加 --auth 则是无权限认证&#xff0c;连接成功后任何用户都可以对数据库进行读写操作。 进入容器并创建用户 docker run -itd --name mongo -p 27…

自定义实现list及其功能

#pragma once #include <iostream> #include <assert.h> using namespace std;namespace test {//******************************设置结点******************************template<class T>struct list_node{T _data;list_node<T>* _next;list_node&l…

HDC.Cloud 2023|邂逅AI,华为云CodeArts铸就研发效能10倍提升

2023年7月7日-9日&#xff0c;华为开发者大会2023&#xff08;Cloud&#xff09;在东莞松山湖隆重举行。期间&#xff0c;华为云主办了以“AI‘邂逅’一站式软件开发&#xff0c;CodeArts以10倍效能“绘”企业应用远景”为主题的分论坛。 华为云PaaS服务产品部副部长汪维敏携一…

Zookeeper概述及部署

Zookeeper概述及部署 一、Zookeeper 定义二、Zookeeper 特点三、Zookeeper 数据结构四、Zookeeper 应用场景五、Zookeeper选举机制● 第一次启动选举机制● 非第一次启动选举机制 六、部署 Zookeeper 集群1.安装前准备2.安装 Zookeeper 一、Zookeeper 定义 Zookeeper是一个开源…

Word之解决中文和英文混写导致字间距增大的问题(六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【密码学】一、概述

概述 1、密码学的发展历史1.1 古代密码时代1.2 机械密码时代1.3 信息密码时代1.4 现代密码时代 2、密码学的基本概念3、密码学的基本属性4、密码体制分类4.1 对称密码体制4.2 非对称加密体制 5、密码分析 1、密码学的发展历史 起因&#xff1a;保密通信和身份认证问题 根据时间…

LabVIEW - 采集声音并保存 wav 文件

1. 题目 编写程序&#xff0c;实现用户点击按钮时&#xff0c;采集声音&#xff0c;显示声音波形&#xff0c;对于采集的声音进行低频段、中频段、高频段分别进行适当的比例放大或者衰减&#xff0c;然后重新合成(三段相加即可)&#xff0c;并将合成的声音下入wav格式的文件保存…

PostgreSQL MVCC的弊端优化方案

我们之前的博客文章“我们最讨厌的 PostgreSQL 部分”讨论了大家最喜欢的 DBMS 多版本并发控制 (MVCC) 实现所带来的问题。其中包括版本复制、表膨胀、索引维护和真空管理。本文将探讨针对每个问题优化 PostgreSQL 的方法。 尽管 PostgreSQL 的 MVCC 实现是 Oracle 和 MySQL 等…

关于 PostgreSQL 删除数据库 - 命令行删除,报错数据库不存在,pgadmin 报错存在会话链接 导致无法删除数据库问题

序言 测试环境&#xff1a; Windows 10问题 笔者尝试过在 cmd 命令行&#xff0c;使用PostgreSQL 的 psql 工具登录 postgresql&#xff0c;删除某个有问题的数据库&#xff0c;准备新建重载该数据库时&#xff0c;发现 DROP DATABASE database_name &#xff0c;竟然报错该…

埃科光电在科创板上市:同创伟业、毅达资本为股东,实控人为董宁

7月19日&#xff0c;合肥埃科光电科技股份有限公司&#xff08;下称“埃科光电”&#xff0c;SH:688610&#xff09;在上海证券交易所科创板上市。本次上市&#xff0c;埃科光电的发行价为73.33元/股&#xff0c;发行数量为1700万股&#xff0c;募资总额约为12.47亿元&#xff…

Shell运行原理以及Linux中的权限问题

目录 一、shell的运行原理 二、Linux权限的概念 2.1 用户账号切换 2.2 仅提升当前指令的权限 2.3 将普通用户添加到信任列表 三、Linux权限管理 3.1 文件访问者的分类 3.2 文件类型和访问权限 3.3 字符权限值的表示方法 3.3.1 字符表示方法 3.3.2 八进制表示法 3.4…

XSS 攻击的检测和修复方法

XSS 攻击的检测和修复方法 XSS&#xff08;Cross-Site Scripting&#xff09;攻击是一种最为常见和危险的 Web 攻击&#xff0c;即攻击者通过在 Web 页面中注入恶意代码&#xff0c;使得用户在访问该页面时&#xff0c;恶意代码被执行&#xff0c;从而导致用户信息泄露、账户被…

BUFG/BUFGCE/BUFH/BUFHCE/BUFH/BUFGHCE/BUFMR/BUFMRCE/BUFR/IBUF/IBUFDS

本文对BUFG/BUFGCE/BUFH/BUFHCE简单介绍&#xff0c;便于后续查看。 原语的使用&#xff1a;在vivado中找到所要用的原语&#xff0c;直接将其实例化到设计中即可。 文章目录 BUFGBUFGCEBUFHBUFHCEBUFMRBUFRBUFMRCEIBUFIBUFDS 下图为 7 系列 FPGA 时钟架构图&#xff1a; BU…

Appium+python自动化(十二)- Android UIAutomator终极定位凶器(超详解)

简介 乍眼一看&#xff0c;小伙伴们觉得这部分其实在异性兄弟那里就做过介绍和分享了&#xff0c;其实不然&#xff0c;上次介绍和分享的大哥是uiautomatorviewer&#xff0c;是一款定位工具。今天介绍的是一个java库&#xff0c;提供执行自动化测试的各种API。 Android团队在4…

数据结构(王道)——数据结构之 二叉树

一、数据结构之 二叉树概念&#xff1a; 特殊的二叉树结构&#xff1a; 满二叉树完全二叉树 二叉排序树 平衡二叉树 二叉树基本概念总结&#xff1a; 二、二叉树的常用性质&#xff1a; 1、【二叉树】的叶子结点比二分支结点多一个 2、【m叉树】的第i层至多有m^(i-1)个结点 3、…

关于Qt For android第一次编译时出现的问题

搞了三四天&#xff0c;搞的快崩溃了&#xff0c;问题提示为 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring root project android-build. > Could not resolve all artifacts for configuration :classpath.> Could not…