10、计算机图形学——几何介绍(曲面的分类以及示例)

基于径向基函数(RBF)的隐式曲面 是一种用于三维重建和曲面建模的方法,它通过使用径向基函数来近似描述隐式曲面。以下是该方法的一些关键点:1. **隐式曲面的定义**:- 隐式曲面是通过一个标量函数 \( F(x, y, z) = 0 \) 定义的,其中 \( F \) 是一个多变量函数,其等值面(即 \( F \) 取常数值的点集)构成了隐式曲面。2. **RBF在隐式曲面中的应用**:基于径向基函数的隐式曲面方法因其灵活性和连续性,在处理复杂的几何形状和曲面重建问题时表现出色。 阅读详情

一、隐式曲面及示例

隐式曲面顾名思义就是不能直接看到曲面的形状,而是通过表达式的方式来表示曲面。所以,该曲面的优势就是查找某个点是否在曲面上比较快,而该类型曲面缺点就是曲面的表达不直观

比如下面这三个就是典型的隐式曲面

表达式很不直观,但是很容易判断出点是否在曲面上

除了几何表示之外,隐式曲面还可以通过其他隐式曲面的交并补得到对应的隐式曲面

比如下图

还有下图

通过对隐式曲面的交并补操作,可以得到稍微复杂的曲面。

除了上述两种方式外,还可以使用符号距离函数和水平集来表示隐式曲面

距离函数表示空间中任何一个点到物体表面的最小距离,如果SDF为正,则表示点在物体外部,反之,则在物体外部。因此,SDF为0的点就是物体的表面。

在图形学中,一般先通过数学的方法混合两个物体的符号距离函数,然后将混合后得到的SDF恢复成形状。

下图表示的就是两个圆球进行混合的不同状态,从而得到不同的形状

水平集和SDF类似,水平集也是得到水平集函数为零的一系列的点,类似于地理中的等高线

二、显示曲面及示例

显示曲面与隐式曲面正好相反,显示曲面没什么固定的表达式,只是给出了映射关系,所以表面长啥样非常直观,缺点就是很不好判断点是否在显示曲面上

比如上图中的点云,还有下图中的多边形网格曲面

除了这两个例子之外,还有一种后缀为.obj的文件表示法

3-10行表示立方体8个顶点。 12-25行表示每个顶点在不同面上的纹理坐标。 27-34表示6个面的法线向量

36-47行了,f是face的缩写,表示一个网格面单元,其中x/x/x的第1位表示是顶点,第2位表示使用哪个顶点纹理,第3位表示使用哪个法线向量。

3个x/x/x表示正好构成一个三角形网格面。

以36行为例:表示第5,1,4个顶点坐标构成一个三角形面,对应的纹理坐标分别是第1,2,3个,该三角形免得法线向量是第一个(27行)

参考

GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili

现代计算机图形学入门(几何) - 知乎 (zhihu.com)

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

计算机图形学入门15:几何表示 计算机图形学入门,几何,隐式几何表示,显式几何表示,点云,网格。 阅读详情

相关推荐

计算机图形学入门17:曲面

计算机图形学入门,曲面,贝塞尔曲面,网格处理,曲面细分,曲面简化。

YanisWu的博客 2370

计算机图形学九:几何1—隐式曲面(代数形式,CSG, 距离函数,分型几何)与显式曲面

隐式曲面与显式曲面1 隐式曲面(Implicit Surface)与显示曲面(Explicit Surface)的特点1.1 隐式曲面的特点1.2 显式曲面的特点2 具体的几种隐式曲面2.1 代数曲面(Algebraic Surfaces)2.2 Constructive Solid Geometry(CSG)2.3 符号距离函数(Signed Distance Function)2.4 水平集(Level Set)2.5 分型几何(Fractals)3 具体的几种显式曲面3.1 点云(Point Clou

吃人的博客 1万+

计算机图形学-实验5-掌握Bezier样条曲面生成思想、复习基本图元绘制、交互操作和几何变换相关内容

实验五:(2学时)   一、 实验目的: 掌握Bezier样条曲面生成思想、复习基本图元绘制、交互操作和几何变换相关内容   二、 实验内容: 1、在窗口中画三维坐标,包括原点和三个坐标轴; 2、画一条Bezier样条曲面,包含4*4个控制点; 3、利用鼠标或键盘控制曲面在屏幕上移动、旋转和放缩; 4、用鼠标调整控制点的位置,观察曲面变化   三、 实现效果及步骤(或流程)

linyujie0927的博客 4076

计算几何07_NURBS曲线与曲面

B样条方法在表示与设计自由曲线曲面时展现出强大的威力,但在设计与表示初等曲线曲面时却遇到了麻烦。因为B样条曲线、及其特例的Bezier曲线都不能精确表示除抛物线以外的二次曲线弧,B样条曲面、及其特例的Bezier曲面都不能精确表示除抛物面以外的二次曲面,而只能给出近似表示。解决这一问题的途径是改进现有的B样条方法,在保留描述自由曲线曲面长处的同时,扩充其表示二次曲线弧与二次曲面的能力,这种方法就是有理B样条方法。 一、NURBS曲线的定义及几何性质 二、权因子对NURBS曲线形状的影响 三、NURBS曲线的

qq_35312463的博客 1万+

计算机科学中的数学之:计算几何

作者:禅与计算机程序设计艺术 1.背景介绍 计算几何(Computer Graphics) 是利用计算机生成图形的方式进行工程绘画的学科。它是3D数学的一个分支,应用于图形学、图像处理、虚拟现实等领域。计算几何在近年来有着极大的发展,主要表现在以下三个方面: 近似计算

AI天才研究院 736

计算机图形学实验代码(全)

1.OpenGL初识 2.直线生成算法 3.图形几何变换 4.线段裁剪算法 5.曲线生成算法 6.真实感图形算法 包含升一升二部分

【XJTUSE计算机图形学】第三章 几何造型技术(2)——Bezier 曲线与曲面

【XJTUSE计算机图形学】第三章 几何造型技术(2)——Bezier 曲线与曲面

weixin_47692652的博客 5347

ESP32-S3双屏AI吊坠:微型边缘智能终端设计实践

边缘智能终端是指在设备端完成数据感知、处理与响应的嵌入式系统,其核心在于低延迟、高隐私与弱网适应性。基于ESP32-S3等轻量级主控,通过语音唤醒、本地AI推理与双屏异步渲染等关键技术,可构建资源受限场景下的实用化人机交互节点。这类设计显著降低对云端依赖,提升实时性与数据安全性,广泛应用于智能穿戴、IoT交互面板及便携式语音设备。本文以‘璀璨·AI吊坠’为实例,深入解析双面圆形屏驱动、ES8311音频链路优化、VAD+Porcupine本地语音流水线,以及亚微安级低功耗状态机实现,为微型AI终端的软硬协同开

weixin_42348783的博客 632

计算机图形学【GAMES-101】5、几何(距离函数SDF、点云、贝塞尔曲线、曲面细分、曲面简化)

Lecture10~121 几何图形的表示方式1.1 几何的隐式表示法1.1.1 函数1.1.2 Constructive Solid Geometry(CSG)1.1.3 距离函数1.1.4 水平集(Level Set)1.2 几何的显式表示法1.2.1 点云(Point Cloud)1.2.2 多边形模型1.2.3 贝塞尔曲线1.2.4 Splines样条线1.2.5 贝塞尔曲面2 几何的操作方式2.1 曲面细分2.1.1Loop细分(Loop Subdivision)2.1.2 Catmull-Cla

记录值得记录的东西 5700

激光三角测量法:斜射与直射式技术的原理与应用解析

本文深入解析激光三角测量法中斜射式与直射式技术的原理、应用及对比。斜射式适用于高精度小范围测量,尤其擅长处理反光表面;直射式则适合大范围位移检测,结构更简单。文章详细介绍了两种技术的光路分析、数学建模、应用场景及选型建议,并探讨了系统校准与误差分析方法,为工业检测领域提供实用参考。

weixin_29280219的博客 413

S7-1200控制S120变频器

②:硬件目录下,添加实物S120设备进行组态(其它现场设备--PROFINET IO--DRIVES......②:双击S120进行IP地址和设备名称设置(注:此处要与STATER软件设置S120一致)M10.0接通时,电机开始运行,M10.0断开,电机停止,调试完成。①:将S7-1200与S120进行通讯连线。④:STATER软件下设置与组态一致的报文。①:点击添加新设备,按实物进行设备组态。②:打开OB1,编写启动停止程序。①:查看S120报文地址。②:模块下添加DO矢量。③:子模块下添加报文。

weixin_38261173的博客 4867

计算机图形学之几何(Geometry)

计算机图形学之几何

一个搬运知识的笨小孩 1304

【Spring源码三千问】哪些循环依赖问题Spring解决不了?

哪些循环依赖问题Spring解决不了?前言版本约定正文场景一: prototype 类型的循环依赖场景二: constructor 注入的循环依赖场景三:Proxy 类型的 Bean 的循环依赖小结 系列博文: 【老王读Spring IoC-0】Spring IoC 引入 【老王读Spring IoC-1】IoC 之控制反转引入 【老王读Spring IoC-2】IoC 之 BeanDefinition 扫描注册 【老王读Spring IoC-3】Spring bean 的创建过程 【老王读Spring I

老王的专栏 7318

图形学笔记 - 4. 几何 - 基本表示方法及曲线和曲面

距离函数:给出从任何地方到对象的最小距离(可以是signed Distance)来自医疗数据(CT、MRI等)的水平集。vp 参数空格顶点 (Parameter space vertices)v 几何体顶点 (Geometric vertices)de Casteljau 算法的(u,v)-可分离应用。只是一个指定顶点、法线、纹理坐标及其连通性的文本文件。Bicubic(双三次型) Bézier 表面贴片。一个例子:混合(线性插值)一个移动的边界。这个表面上有什么点,直接带入(u,v)

ffffflk的博客 1406

OceanBase备租户创建(二):通过BACKUP DATABASE PLUS ARCHIVELOG

OceanBase数据库备租户创建方法二:通过BACKUP DATABASE PLUS ARCHIVELOG功能实现,特别适用于社区版和单机版部署模式。

Sebastien23的博客 538

55、磁吸附爬壁机器人运动仿真与位置控制

本文针对大型船舶喷涂作业中人工操作存在的高风险与低效率问题,提出一种基于麦克纳姆轮的磁吸附爬壁机器人运动控制方案。通过建立Adams虚拟样机与MATLAB/Simulink控制系统的联合仿真模型,设计了速度和位置双闭环控制系统,采用模糊PI控制器优化速度响应,并引入位置反馈补偿重力引起的垂直偏移。研究结果表明,模糊PI控制器在响应速度、超调抑制和位置稳定性方面优于传统PI控制器,且位置反馈能有效校正横向移动中的下坠现象,尤其在跨越焊缝等复杂工况下仍可保持稳定运行,显著提升了爬壁机器人的运动精度与作业可靠性。

linux6sysadmin的博客 166

几何建模基础-样条曲线和样条曲面介绍

几何建模基础-样条曲线和样条曲面介绍

Hanson的博客 2858

爬虫逆向:Hook 技术原理与实战

Hook 技术​(钩子技术)是一种通过拦截和修改程序执行流程的技术手段。它允许开发者在目标程序的特定位置插入自定义代码,以改变程序的默认行为或获取运行时信息。Hook 技术广泛应用于调试、逆向工程、性能分析、安全防护等领域。Hook 技术在爬虫逆向中非常有用,能够有效获取和修改目标程序的数据。通过合理使用 Hook 工具和技术,可以显著提升爬虫的效率和成功率。但使用时需注意法律和道德问题,确保行为合规。

数据知道的博客 1万+

计算机图形学入门(十)-几何(曲线与曲面)

本部分主要介绍了图形学中常用的曲线和曲面的表示方法,主要解释了贝塞尔曲线和贝塞尔曲面的定义与表达过程,当然也简单介绍了其他几种表示方法。

weixin_45314475的博客 998

嵌入式工程师成长之路(10)——项目举例

送给大学毕业后找不到奋斗方向的你(每周不定时更新)

云轩阁 5万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

微积分与计算几何: 曲面绘制技巧

1.背景介绍 微积分与计算几何是计算机图形学领域的两个基本概念。微积分用于描述连续变化的过程,计算几何则关注空间中的几何形状。在计算机图形学中,曲面绘制技巧是一个重要的话题,它涉及到如何使用微积分和计算几何的原理来描绘三维空间中的曲面。 在这篇文章中,我们将讨论如何使用微积分和计算几何的原理来绘制三维曲面。我们将从核心概念、算法原理、具体操作步骤、代码实例和未来发展趋势等方面进行全面的探讨。 ...

AI天才研究院 1447

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【XJTUSE计算机图形学】第三章 几何造型技术(1)——参数曲线和曲面

【XJTUSE计算机图形学】第三章 几何造型技术(1)——参数曲线和曲面

weixin_47692652的博客 3585

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算机图形学·9 几何学

我们先来看直线的参数形式:P(α)=P0 + αd,即所有过P0点,与P0连线,且平行于向量d的点构成的直线。特别的,对任意点,定义1 • P = P (点)、0 • P = 0 (零向量,方向不定),零向量与任何向量都线性相关,任意一个向量组里只要有零向量,就一定是线性相关的。4、Linear/Vector Spaces 线性/向量空间是处理向量的数学系统,其中的运算有标量-向量乘法(u=αv)和向量-向量加法(w=u+v),并且在向量空间中,类似v = u + 2w − 3r的表达式有意义。

2303_79624041的博客 1186

NURBS曲面拟合算法资源:引领高质量几何建模的新篇章

NURBS曲面拟合算法资源:引领高质量几何建模的新篇章 【下载地址】NURBS曲面拟合算法资源 本资源专注于NURBS(非均匀有理B样条)曲面拟合算法,为计算机图形学、几何建模和动画领域提供强大的支持。通过精确的曲面拟合,您能够实现高质量的几何建模。资源包括完整的算法实现代码、示例数据及拟合结果,以及详细的文档资料,帮助...

gitblog_06782的博客 1080

计算机图形学Games101笔记--几何

可以被认为通过参数定义,所以是。

顾若茵的博客 876
上一篇: 9、计算机图形学——纹理的应用(环境贴图、凸凹贴图、法线贴图以及位移贴图)
下一篇: 11、计算机图形学——几何(贝塞尔曲线与曲面)
Master Cui
博客等级 码龄9年 1408粉丝 224原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值