解读——SuperMap iClient3D for Cesium使用柱体截面绘制河流

原文参考

SuperMap iClient3D for Cesium绘制河流(二)_cesium polylinevolume 管道流向添加-CSDN博客

river = viewer.entities.add({name : 'river',polylineVolume : {positions: new Cesium.Cartesian3.fromDegreesArrayHeights(positions),  //节点坐标shape: computeCircle(150.0),  //截面形状material : new Cesium.PolylineTrailLinkMaterialProperty(Cesium.Color.SKYBLUE,10000),cornerType: Cesium.CornerType.MITERED,}
})function computeCircle(radius) {  //设置截面长和宽的大小var positions = [];for(var i = 0; i < 180; i++) {let x = radius * Math.cos(Math.PI * 2 * i / 360); //宽度参数radius可传入进行控制let y = 0.1 * Math.sin(Math.PI * 2 * i / 360); //将高度尽可能设置小,达到面片效果positions.push(new Cesium.Cartesian2(x, y));}return positions;
}

将截面设置为面片模拟河流

computeCircle方法是生成一个圆形截面的顶点位置数组,用于创建多段线体积的截面形状。

以下是对其原理的几何角度解释:

首先,我们需要了解一些基本几何概念:-

圆的参数方程:在平面直角坐标系中,一个半径为r的圆可以由以下参数方程表示:

 x = r * cos(θ)

 y = r * sin(θ)  

其中,(x, y)是圆上的一个点,θ是该点与圆心的连线与x轴正方向的夹角。

- 弧度和角度的转换关系:

一个完整的圆周对应的角度是360度或2π弧度,因此,我们可以通过以下关系将角度转换为弧度:

 弧度 = 角度 * (π / 180)

 其中,π是圆周率。

现在,我们来解释代码中的计算过程:

let x = radius * Math.cos(Math.PI * 2 * i / 360);
let y = 0.1 * Math.sin(Math.PI * 2 * i / 360);
  • Math.cos(Math.PI * 2 * i / 360):这里的`Math.cos()`函数计算给定角度的余弦值。我们将角度转换为弧度,使用了`Math.PI * 2 * i / 360`的方式。其中,`Math.PI * 2`表示一个完整的圆周对应的弧度,`i`是当前的角度,`360`是一个完整的圆周对应的角度。
  • -Math.sin(Math.PI * 2 * i / 360):这里的`Math.sin()`函数计算给定角度的正弦值。同样,我们将角度转换为弧度。
  • radius:这是传入的半径参数,用于控制截面的大小。通过将半径乘以余弦值,我们可以得到每个顶点在x轴上的坐标。
  • 0.1:将半径设为0.1,即将截面在y轴上的高度控制在一个较小的值,从而实现了截面的效果。
  • 循环变量i的范围是从0到180:这是因为我们希望生成一个半圆形的截面,而不是完整的圆形。

综上所述,通过使用圆的参数方程和给定的半径参数,我们可以计算出圆形截面的每个顶点的x和y坐标。这些坐标将用于创建多段线体积的截面形状。

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

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

相关文章

《Lua程序设计》-- 学习9

迭代器和泛型for 迭代器和闭包 迭代器&#xff08;iterator&#xff09;是一种可以让我们遍历一个集合中所有元素的代码结构。在Lua语言中&#xff0c;通常使用函数表示迭代器&#xff1a;每一次调用函数时&#xff0c;函数会返回集合中的“下一个”元素。 一个闭包就是一个…

C/C++ - 类的封装特性

目录 类的封装 语法格式 声明定义 分文件 访问权限 类作用域 对象模型 构造函数 默认构造函数 带参构造函数 拷贝构造函数 构造函数重载 委托构造函数 初始数据列表 构造默认参数 构造函数删除 析构函数 析构函数概念 析构函数特性 析构函数示例 析构调用…

AIGC项目——Meta:根据对话音频生成带动作和手势的3d逼真数字人

From Audio to Photoreal Embodiment: Synthesizing Humans in Conversations From Audio to Photoreal Embodiment:Synthesizing Humans in Conversations 从二元对话的音频中&#xff0c;我们生成相应的逼真的面部、身体和手势。 概括性:角色是由作者的声音驱动的(而不是模…

【解决视网膜长尾数据】实例级类平衡、层次预训练、混合知识蒸馏

解决视网膜长尾数据&#xff1a;实例级类平衡、层次预训练、混合知识蒸馏 问题&#xff1a;视网膜疾病分类&#xff0c;解法&#xff1a;深度学习模型问题&#xff1a;数据复杂性处理&#xff0c;解法&#xff1a;多任务框架&#xff08;同时处理多种疾病&#xff09;和少量样本…

TSINGSEE青犀视频智慧电梯管理平台,执行精准管理、提升乘梯安全

一、方案背景 随着城市化进程的不断加快&#xff0c;我国已经成为全球最大的电梯生产和消费市场&#xff0c;电梯也成为人们日常生活中不可或缺的一部分。随着电梯数量的激增&#xff0c;电梯老龄化&#xff0c;维保数据不透明&#xff0c;物业管理成本高&#xff0c;政府监管…

C#: form 添加窗体最小化事件,添加系统托盘图标,点击后可以打开、最小软件窗口

说明&#xff1a; 1.实现窗体在最小化后触发一个事件&#xff0c;可以去实现需要的功能。 2.最小化后软件图标出现在系统右下角的托盘串口。 3.点击托盘口的图标可以实现软件弹出窗口和最小化的切换。 1.参考办法 以下是判断C#窗体最小化到状态栏的状态的方法&#xff1a;…

javaweb项目,springboot幼儿园健康管理系统,界面美观,增删改查。

javaweb项目&#xff0c;幼儿园健康管理系统&#xff0c;界面美观&#xff0c;增删改查。 管理员&#xff0c;老师&#xff0c;学生三个角色。 功能&#xff1a;权限管理&#xff0c;咨询列表&#xff0c;教师列表&#xff0c;班级列表&#xff0c;健康档案列表&#xff0c;评…

C++——特殊类

特殊类 文章目录 特殊类一、请设计一个类&#xff0c;不能被拷贝二、请设计一个类&#xff0c;只能在堆上创建对象方案一&#xff1a;析构函数私有化方案二&#xff1a;构造函数私有化 三、请设计一个类&#xff0c;只能在栈上创建对象四、请设计一个类&#xff0c;不能被继承五…

c++连接mysql

c连接mysql 安装mysql以及c对应的库进入数据库&#xff0c;创建数据库&#xff0c;表&#xff0c;并新建管理员用户编写c代码编译运行&#xff0c;测试结果头文件解释 安装mysql以及c对应的库 sudo apt-get update sudo apt-get install mysql-server sudo apt-get install li…

CISAW和CISP-PTE证书选择指南

&#x1f4e3;在信息安全领域&#xff0c;选择合适的证书可以为你的职业生涯增添光彩。很多从事信息渗透行业的朋友经常讨论CISP-PTE和CISAW之间的选择问题。今天就从4个方面带你详细了解这两张证书&#xff0c;帮你做出明智的选择&#xff01; 1️⃣证书的行业前景 &#x1f4…

python爬虫爬取网站

流程&#xff1a; 1.指定url(获取网页的内容) 爬虫会向指定的URL发送HTTP请求&#xff0c;获取网页的HTML代码&#xff0c;然后解析HTML代码&#xff0c;提取出需要的信息&#xff0c;如文本、图片、链接等。爬虫请求URL的过程中&#xff0c;还可以设置请求头、请求参数、请求…

Ubuntu系统安装 Redis

环境准备 Ubuntu 系统版本&#xff1a;22.04.3Redis 版本&#xff1a;6.2.12 检查本地 make 环境 make -version若没有安装&#xff0c;则需要安装 sudo apt install make检查本地 gcc 环境 gcc -version若没有安装&#xff0c;则需要安装 sudo apt install gcc。 sudo a…

Single-Head ViT;Faster Whisper;Transformer KF;Pick-and-Draw

本文首发于公众号&#xff1a;机器感知 Single-Head ViT&#xff1b;Faster Whisper&#xff1b;Transformer KF&#xff1b;Pick-and-Draw SHViT: Single-Head Vision Transformer with Memory Efficient Macro Design Recently, efficient Vision Transformers have shown …

【遥感专题系列】遥感影像信息提取之——人工目视解译

​遥感影像通过亮度值或像元值的高低差异&#xff08;反映地物的光谱信息&#xff09;及空间变化&#xff08;反映地物的空间信息&#xff09;来表示不同地物的差异&#xff0c;这是区分不同影像地物的物理基础。 ​人工解译是目前国内使用最多的一种影像提取方法&#xff0c;如…

算法练习-螺旋矩阵(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 给定一个正整数n&#xff0c;生成一个包含1到 n^2 所有元…

API网关-Apisix RPM包方式自动化安装配置教程

文章目录 前言一、简介1. etcd简介2. APISIX简介3. apisix-dashboard简介 二、Apisix安装教程1. 复制脚本2. 增加执行权限3. 执行脚本4. 浏览器访问5. 卸载Apisix 三、命令1. Apisix命令1.1 启动apisix服务1.2 停止apisix服务1.3 优雅地停止apisix服务1.4 重启apisix服务1.5 重…

Android矩阵Matrix变换setRectToRect,Kotlin

Android矩阵Matrix变换setRectToRect&#xff0c;Kotlin 在 Android画布Canvas裁剪区域clipRect&#xff0c;Kotlin-CSDN博客 基础上&#xff0c;增加一个点&#xff0c;通过setRectToRect挖出Bitmap原图中心区域的一块放到目标RectF里面。 import android.content.Context imp…

Google Chrome 常用的几个参数

1 右键--Google Chrome--属性--目标 参数作用--disable-infobars此计算机将不会再收到 Google Chrome 更新&#xff0c;因为 Windows XP 和 Windows Vista 不再受支持。适用于 xp、2003 的 49.x.x.x 版本。示例1--ingore-certificate-errors忽略证书错误--disable-background-…

知识库建设这些工具来帮忙,企业工作效率翻倍

在当今深度信息化的年代&#xff0c;知识库成了企业不可或缺的一部分&#xff0c;它的建设与管理显得格外重要。然而&#xff0c;想要建设又好又高效的知识库并非易事。好消息是&#xff0c;有很多优秀的工具可以让这个过程变得更加轻松&#xff0c;今天我们就重点来探讨其中的…

excel中去掉单元格中两个数字之间的空格

excel中去掉单元格中两个数字之间的空格 使用公式&#xff1a;SUBSTITUTE(A1," “,”") 解释&#xff1a;将A1单元格中的空格查找出来并去掉。