SuperMap三维复杂模型建模之3D极坐标建模——原理篇

作者:超图研究院技术支持中心-于丁

随着SuperMap iDesktop 10i(2021)
V10.2.1的上线发布,为进一步拓展全空间数据模型及其分析计算能力,一个新功能“3D极坐标建模”也随着该版本悄然上线。

3D极坐标建模功能实现根据UV参数和数学表达式,构建包括球面、抛物面、双曲抛物面、柱面、圆锥面、莫比乌斯环面、螺旋面、螺旋环面以及Roman曲面等多种3D曲面模型。

一、曲面建模

3D极坐标建模的本质就是曲面建模,在曲面建模领域上超图iDesktop同样是无法避开UV坐标的。但实际应用上,我们绝大部分人并不是该领域专业出身的,都是在各个应用软件或项目需求中发现UV坐标这个新领域的,也许我们都曾试图通过百度简单搜索个“新手0基础uv坐标曲面建模5分钟上手教程”的东西,或者轻重强度的资料搜索钻研搞懂。但真的上手都很快放弃了,我们会发现在曲面建模“入门”上,没有接触过的数学概念一个追着一个抱团袭击我们的大脑“黎曼几何”、“非欧控件”、“微分几何”、“样条曲线”…打的我们落荒而逃。我们视图跳过清晰地了解数学原理,直接上手操作各大平台的建模软件进行实战操作,却又发现使用预设模板点击一下就建模成功了,但想要自己需要的造型进行修改,面对复杂、陌生、庞大的参数调整甚至创造时,软件没那么
“自动”、“智能”了,力不从心又无处下手。

虽然数学有自身的优雅,能亲手推导、构造每一步的人凤毛麟角,但我们只是了解理解相关逻辑,借助一些成熟的辅助和平台工具,已经能够让抽象的理论照进现实,完成我们的曲面建模需求。因此本篇文章便是“3D极坐标建模”使用的原理篇,让我们从UV坐标开始带着问题,来脚踏实地的步入建模之路。

针对某一个具体的曲面,是可以通过该曲面上的U、V坐标值来指定曲面上的某个确定的点。

但是我们已习惯了欧几里得空间,习惯了在笛卡尔三维坐标系(xyz)下表示空间点的方式,我们普遍会在查阅了很多资料教程后,依然会有这样的一些问题摆在眼前:

1、为什么能用(u,v)两个坐标值来表示空间曲面上点位置?

2、曲面上的UV线是怎样形成的?

3、采用UV坐标有什么意义?

4、所有曲面都可以UV坐标化吗?

虽然看上去需要很深的数学功底,但还是让我尽量通俗易给大家简单的解释一下UV坐标。

二、曲面参数方程

对于点的曲面坐标,有些资料中,还给出了(u,v,w)来类比我们浸淫多年的欧式坐标系(x,y,z),这其实是个误导,因为这里的u、v其实是来源于参数方程的两个参数,何来的w呢?

空间曲面的参数方程是这样的:
在这里插入图片描述

这是以u、v为参变量的双参数方程,与空间任意点的坐标(x,y,z)不同,如果你通过(u,v)两个值指定了曲面上的一个点的位置,这里除了两个坐标值条件外,还有一个隐含的条件,就是该点在指定的曲面上,曲面参数方程本身就是一个已知条件,并非(u,v)两个坐标值就能指定空间任意点。

与空间曲面类似,空间曲线方程是单参数方程,形式如下:
在这里插入图片描述

它只有一个参数t。

为什么空间曲线参数方程只有一个参变量,而空间曲面参数方程需要两个呢?

我们的教科书只管给出公式,却没有回答这类的问题。

我们不妨将独立参变量的个数理解为"参数自由度"这样一个概念,对于一个既定的空间曲线上的点而言,只要知道它的一个坐标值,比如x=x0,那么就可以确定是曲线上的某个点,如果需要图形辅助理解,就是x=x0这个平面与空间曲线的交点。因此,我们认为空间曲线的”参数自由度"为1,所以参数方程的参数个数为1。

而对于已知的空间曲面而言,需要知道两个坐标值,才能确定曲面上对应的点,同样用图形辅助理解,两个平面的交线与空间曲面的交点。所以空间曲面的"参数自由度"为2,曲面的参数方程的参数个数为2。

这样的说法仅仅是帮助应用者去理解,而不是严格意义上的证明,而且本文的核心就是“帮助理解”。

三、黎曼空间

很多资料上为了帮助理解曲面上的UV坐标,会特意做一个如下图这样的一个映射关系,将平面矩形网格与曲面的UV坐标网做一个对应。甚至让我们将曲面的UV坐标网,想象成由一个平整的矩形网格变形而来的。

在这里插入图片描述

这样解释也是一种逃避,因为不想突破既有的欧几里得空间知识的边界。其实,本来就有曲面空间几何体系的,只不过往往在纯数学或者物理领域理科生才会接触到,我们工程领域也许是被—堆堆公式吓倒了,以至于自然地拒之于千里之外。

我们不妨作为科普性质地做些必要的了解,然后怀着一颗崇拜的心,但是又可以心安理得地使用他们非凡的成果。

如果一定要从几何理论上来理解UV坐标,那就不得不搬出一个大咖"黎曼”,就是下面这个人,德国数学家,40岁就去世了,他开创的黎曼几何,给爱因斯坦的广义相对论提供了数学基础。

黎曼建立了黎曼空间的概念,把欧氏几何、非欧几何都包进了他的体系之中,在这里说黎曼空间,我们无意去罗列甚至研究抽象的数学理论,仅仅是为了帮助我们突破笛卡尔平直坐标系的惯性思维,使我们明白,我们所学到的知识,仅仅是一个大的几何体系下的一个小领域,但是目前研究曲面的构形,不得不用到黎曼空间的概念,是逃避不了的,其实也仅仅是理解而已,很多基于理论的具体应用,软件的库文件去实现了,而我们不过是调用(程序开发者)或者去使用调用结果而已。

然而,即使是理解也是有难度的。

也有资料对黎曼空间的解释就是弯曲的空间。为了抵抗既有知识的束缚,我们需要充分地发挥想象力。针对一维空间,不妨将直线数轴的概念推广到沿着空间曲线,而将该曲线称为一个线空间,那么类似数轴上长度单位的刻度点,在线空间上也有用来度量的分割点,当然度量的单位就不仅仅是长度了。

顺着这个思路,二维空间就是面空间,当然,这里的面自然不局限于平面,可以是任意的曲面,而且对应一维线空间上的刻度点,二维面空间上是两个方向的度量参考线,当然不局限于直线,只不过绘出这些线以后,与笛卡尔坐标系中XY平面坐标网有些类似,这就是UV坐标线。

在这里插入图片描述

怎样来理解UV两个方向的参考线呢?

我们也可以借助于曲面参数方程来进行如下的推演:

已知参数曲面S的方程(x,y,Z) =
(x(u,v),y(u,v),z(u,v)),自变量u,v是曲面S的参数。在曲面S上取一点可以用r
(u0,vO)来表示,如果让参数u固定,即u=u0,而让参数v变化,则动点描出一条落在曲面S上的曲线r
(u0,v),这条曲线称为在曲面S上经过(u0,v0)的v-曲线,同理可以定义经过(u0,v0)点的u-曲线,即r
(u,
v0)。这样,参数曲面上经过每一点有一条u-曲线和一条v-曲线,它们构成曲面上的参数曲线网,如下图所示。这个推演过程也可以帮助理解曲面的UV坐标。
在这里插入图片描述

四、UV坐标的实现

目前在包括超图iDesktop在内的,可以做曲面处理的软件中,针对一个确定的曲面,一定有一个与其绑定在一起的UV坐标系,你也可以将它理解为一个局部坐标系,这个曲面的很多特性用这个UV坐标系来进行设置和计算会带来很大的方便。我们的曲面相关操作,包括二次开发的接口一定以UV坐标系来处置的。

也就是说即使是专注于建模使用的软件,一样是离不开UV坐标的,如Rhino、Catia等等。

到目前为止,尽管我们很多人还是没有很深入的,也许上述的这些粗浅的表述,我们已经能够简单的了解UV坐标下的参数方程了,各参数具体影响的是什么,如何去影像的已经有个感觉了不再茫然无措,当然接下来我们就会有这样的问题,那如何上手实操构建出自己心中所想,花里胡哨好看的模型呢?

让我们见下一篇博客《SuperMap三维复杂模型建模之3D极坐标建模——基础篇》。

若对本文内容有疑问或讨论可在本文下方留言。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python系列】Jupyter Notebook 中执行 Shell 脚本的方法

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【随笔】Git 高级篇 -- 项目里程碑 git tag(二十)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

绝地求生:杜卡迪系列活动集合 各种活动送不停

今天更新已结束,速度上好开冲! 春季签到活动(第1轮) 活动时间 4月9日 - 4月22日 12:00 任务要求 每日登录游戏(每日上午10点刷新) 活动期间全勤可获得奖励如下 杜卡迪物资箱 (x1) 杜卡迪活…

【C++杂货铺】详解 stack 和 queue

🌈前言🌈 欢迎收看本期【C杂货铺】,本期内容将讲解CSTL中stack和queue的内容,其中包含了stack , queue,priority_queue是什么,怎么使用以及模拟实现这些容器。 此外,还将将讲解设计模…

【迅为iMX6Q】开发板 Linux version 6.6.3 SD卡 启动

开发环境 win10 64位 VMware Workstation Pro 16 ubuntu 20.04 【迅为imx6q】开发板, 2G DDR RAM linux-imx 下载 使用 NXP 官方提供的 linux-imx,代码地址为: https://github.com/nxp-imx/linux-imx 使用 git 下载 linux-imx&#xff…

STM32学习和实践笔记(6):自己进行时钟配置的思路

在《STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (d)-CSDN博客》 中,我了解到,在程序执行我们写的main函数之前,实际上先执行了一个汇编语言所写的启动文件,以完成相应的初始…

python爬虫-----爬虫解析—xpath(第十八天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

Day:004(4) | Python爬虫:高效数据抓取的编程技术(数据解析)

XPath工具 浏览器-元素-CtrlF 浏览器-控制台- $x(表达式) Xpath helper (安装包需要科学上网) 问题 使用离线安装包 出现 程序包无效 解决方案 使用修改安装包的后缀名为 rar,解压文件到一个文件夹,再用 加载文件夹的方式安装即可 安装 python若使用…

功能测试_验证qq账号的合法性

案例:验证qq账号的合法性(要求:6-10位的自然数) 使用等价类设计用例案例: 步骤: 1:明确需求:qq账号的合法性 2:划分等价类:有效等价类、有效取值、无效等价类、无效取值 3&…

风电场智能化转型基于ARM工控机的HDMI数据实时监控显示

全球能源结构不断调整的大背景下,智能电网、太阳能发电、风能发电等清洁能源领域正经历着一场由技术创新引领的深刻变革。在这场变革中,ARM架构的工控机凭借其出色的性能、低功耗及高度可定制化的特点,正在成为能源管理系统的核心组件&#x…

ModStartCMS(支持Laravel 9)v8.3.0

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

tailwindcss在manoca在线编辑智能感知

推荐一下monaco-tailwindcss库,它实现在monaco-editor网页在线编辑器中对tailwindcss的智能感知提示,在利用tailwindcss实现html效果布局。非常的方便。 生成CSS

python简单读取和索引.nc文件(气象小白入门版)

一、总代码 #数据下载,这里下载的是NCEP的气压数据,在命令行运行代码即可 #wget -P /mnt/g/st_touchfish_py/data ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis.derived/pressure/air.mon.mean.ncimport xarray as xr import pandas as pd import …

51单片机ESP8266WiFi模块简介

乐鑫与安信可关系 乐鑫是生产esp8266芯片的厂家,安信可是基于esp8266芯片生产模组的厂家,所谓模组是基于芯片制作的套件。 波特率 ESP8266系列模组出厂使用的是AT固件,默认波特率是115200。实际上,模组在上电过程中首先是在748…

43.基于SpringBoot + Vue实现的前后端分离-疫苗发布和接种预约系统(项目 + 论文)

项目介绍 本次使用Java技术开发的疫苗发布和接种预约系统,就是运用计算机来管理疫苗接种预约信息,该系统是可以实现论坛管理,公告信息管理,疫苗信息管理,医生管理,医院信息管理,用户管理&#x…

【算法深度探索】动态规划之旅(1):挑战OJ题海,解锁15道经典难题,让你成为DP大师!

📃博客主页: 小镇敲码人 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧月,独傲天下百坚强。 男儿应有龙…

uniapp小程序下载并导出excel

<button click"confirmExport">导出excel</button>confirmExport() {let header {"X-Access-Token": uni.getStorageSync(ACCESS_TOKEN), //自定义请求头信息} let url "http"/......"; // 后端API地址uni.request({url: ur…

Java(多线程)

一、基本概念 进程&#xff1a;一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元&#xff0c;在传统的操作系统中&#xff0c;进程既是基本的分配单元&#xff0c;也是基本的执行单元。线程&#xff1a;操作系统中能够进行运算的最…

比较好玩的车子 高尔夫6

https://www.sohu.com/a/484063087_221273 四万多如愿收获手动挡高尔夫6&#xff0c;可靠性、经济性、操控性兼顾_搜狐汽车_搜狐网 2.基本上其他人也不知道到底是什么相关的车子信息

【算法刷题】八大排序算法总结(冒泡、选择、插入、二分插入、归并、快速、希尔、堆排序)

文章目录 八大排序算法总结1.冒泡排序2.选择排序3.插入排序4.二分插入排序5.归并排序6.快速排序7.希尔排序8.堆排序 八大排序算法总结 排序排序方法平均情况最好情况最坏情况空间稳定性1冒泡排序O(n2)O(n)O(n2)O(1)稳定2选择排序O(n2)O(n2)O(n2)O(1)不稳定3插入排序O(n2)O(n)O…