Learning vtkjs之WarpScalar

过滤器 WarpScalar

介绍

先看一个官方的一句话介绍:

vtkWarpScalar - deform geometry with scalar data

vtkWarpScalar - 使用标量数据变形几何体
详细介绍

vtkWarpScalar is a filter that modifies point coordinates by moving
points along point normals by the scalar amount times the scale
factor. Useful for creating carpet or x-y-z plots.

If normals are not present in data, the Normal instance variable will
be used as the direction along which to warp the geometry. If normals
are present but you would like to use the Normal instance variable,
set the UseNormal boolean to true.

If XYPlane boolean is set true, then the z-value is considered to be a
scalar value (still scaled by scale factor), and the displacement is
along the z-axis. If scalars are also present, these are copied
through and can be used to color the surface.

Note that the filter passes both its point data and cell data to its
output, except for normals, since these are distorted by the warping.

vtkWarpScalar是一个过滤器,它通过沿点法线移动点坐标,移动的距离是标量值乘以缩放因子来修改点坐标。这对于创建地毯图或x-y-z图非常有用。

如果数据中不存在法线,将使用Normal实例变量作为变形几何体的方向。如果数据中存在法线,但您想要使用Normal实例变量,请将UseNormal布尔值设置为true。

如果设置了XYPlane布尔值为true,那么z值将被视为标量值(仍然乘以缩放因子),位移将沿z轴进行。如果也存在标量值,这些值将被复制并通过它们可以用来给表面着色。

请注意,该过滤器将其点数据和单元数据传递到输出,但不包括法线,因为这些法线由于变形而发生了扭曲。

代码效果

wrapscralar
核心代码是:

//wrapscalar的过滤器const filter = vtkWarpScalar.newInstance({scaleFactor: 0.1,useNormal: false,});
//自定义的过滤器const randFilter = macro.newInstance((publicAPI, model) => {macro.obj(publicAPI, model); // make it an objectmacro.algo(publicAPI, model, 1, 1); // mixin algorithm code 1 in, 1 outpublicAPI.requestData = (inData, outData) => {console.log(inData[0].getPoints());// implement requestDataif (!outData[0] || inData[0].getMTime() > outData[0].getMTime()) {const newArray = new Float32Array(inData[0].getPoints().getNumberOfPoints());for (let i = 0; i < newArray.length; i++) {// newArray[i] = i % 2 ? 1 : 0;// scalar是随机newArray[i] = Math.random();}const da = vtkDataArray.newInstance({name: "spike",values: newArray,});const newDataSet = vtk({ vtkClass: inData[0].getClassName() });// 浅拷贝数据newDataSet.shallowCopy(inData[0]);newDataSet.getPointData().setScalars(da);outData[0] = newDataSet;}};})();randFilter.setInputConnection(planeSource.getOutputPort());filter.setInputConnection(randFilter.getOutputPort());mapper.setInputConnection(filter.getOutputPort());// Select array to processfilter.setInputArrayToProcess(0, "spike", "PointData", "Scalars");

打印了一下中间数据inData[0].getPoints().getData()
在这里插入图片描述
总共是363个数据,表示是121个点,因为我们平面是10 X10分段的,意味着有(10+1)X(10+1)个点,没错。
其实这个过滤器还有一个问题就是目前看,每次都要从上次数据里面拷贝数据过来,如果过滤器多了,这个数据不清楚释放的是否及时。


如果scalar变成这个值:newArray[i] = i % 2 ? 1 : 0;显示效果是
在这里插入图片描述
这个用来做地形图和热力图会比较有场景

全部代码都放到github上了
新坑_Learning vtkjs_git地址
关注我,我持续更新vtkjs的example学习案例

也欢迎各位给我提意见,技术交流~

大鸿

WeChat : HugeYen
WeChat Public Account : BIM树洞

做一个静谧的树洞君

用建筑的语言描述IT事物;

用IT的思维解决建筑问题;

共建BIM桥梁,聚合团队。

本学习分享资料不得用于商业用途,仅做学习交流!!如有侵权立即删除!!

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

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

相关文章

Linux服务器安装nginx,nginx配置详解。

前置 一台linux服务器。nginx安装包&#xff08;地址&#xff1a;NginxDownload&#xff09;ssh连接工具&#xff1a;putty,Tssh等推荐使用tssh或者服务器云平台自带的 部署 通过ssh工具连接到服务器&#xff0c;su进入root账户&#xff0c;先更新三方库。 更新三方库 Cen…

spss数据分析是什么 怎么下载spss

什么是SPSS SPSS是社会统计科学软件包的简称&#xff0c; 其官方全称为IBM SPSS Statistics。SPSS软件包最初由SPSS Inc.于1968年推出&#xff0c;于2009年被IBM收购&#xff0c;主要运用于各领域数据的管理和统计分析。作为世界社会科学数据分析的标准&#xff0c;SPSS操作操作…

【Rust光年纪】超越ORM:探索Rust语言多款数据库客户端库的核心功能和使用场景

数据库操作新选择&#xff1a;从异步操作到连接管理&#xff0c;掌握Rust语言数据库客户端库的全貌 前言 在现代软件开发中&#xff0c;与数据库进行交互是一个常见的任务。Rust语言作为一种高性能、内存安全的编程语言&#xff0c;拥有丰富的生态系统来支持各种数据库操作。…

C++合作开发项目:美术馆1.0

快乐星空MakerZINCFFO 合作入口&#xff1a;CM工作室 效果图&#xff1a; 代码&#xff1a; &#xff08;还有几个音乐&#xff01;&#xff09; main.cpp #include <bits/stdc.h> #include <windows.h> #include <conio.h> #include <time.h> #in…

Codeforces 1733D 891C Envy+1681F Unique Occurrences(可撤销并查集)

891C Envy 题意 给定一张图以及q个查询&#xff0c;输出每个查询中的边是否全部会出现在某个最小生成树里。 思路 首先如果只考虑一次查询&#xff0c;这一次查询只有一条边&#xff0c;那么只要用kruskal算法处理完所有边权小于这条边的边&#xff0c;此时如果这条边的两点已…

Math Reference Notes: 数学思想和方法

文章目录 1. 数学思想1.1 数形结合思想1.2 转化思想1.3 分类讨论思想1.4 整体思想 2. 数学方法2.1 配方法2.2 因式分解法2.3 待定系数法2.4 换元法2.5 构造法2.6 等积法2.7 反证法2.8 判别式法 1. 数学思想 1.1 数形结合思想 定义&#xff1a;将数与形&#xff08;代数与几何…

linux 安装使用php环境, 以及常用操作介绍

php的源码编译安装,属实是太麻烦太痛苦了&#xff1b;于是我们选择放弃这种方式&#xff0c;采用linux自带的包管理器来安装。 本文使用的linux发行版本是centOs, 安装php环境的指令如下 yum install php php-fpm 如果你的YUM仓库中没有你需要的版本&#xff0c;你可能需要添…

《数据结构》--顺序表

C语言语法基础到数据结构与算法&#xff0c;前面已经掌握并具备了扎实的C语言基础&#xff0c;为什么要学习数据结构课程&#xff1f;--我们学完本章就可以实践一个&#xff1a;通讯录项目 简单了解过后&#xff0c;通讯录具备增加、删除、修改、查找联系人等操作。要想实现通…

Python学习笔记—100页Opencv详细讲解教程

目录 1 创建和显示窗口... - 4 - 2 加载显示图片... - 6 - 3 保存图片... - 7 - 4 视频采集... - 8 - 5视频录制... - 11 - 6 控制鼠标... - 12 - 7 TrackBar 控件... - 14 - 8.RGB和BGR颜色空间... - 16 - 9.HSV和HSL和YUV.. - 17 - 10 颜色空间的转化... - 18 - …

数据结构——栈的实现(java实现)与相应的oj题

文章目录 一 栈栈的概念:栈的实现&#xff1a;栈的数组实现默认构造方法压栈获取栈元素的个数出栈获取栈顶元素判断当前栈是否为空 java提供的Stack类Stack实现的接口&#xff1a; LinkedList也可以当Stack使用虚拟机栈&#xff0c;栈帧&#xff0c;栈的三个概念 二 栈的一些算…

JetBrains IDE 使用git进行多人合作开发教程

以下DEMO可以用于多人共同开发维护一个项目时&#xff0c;使用Git远程仓库的实践方案 分支管理 dev&#xff1a;开发分支test&#xff1a;测试分支prod&#xff1a;生成分支 个人开发也最起码有一个masterdev&#xff0c;作为主分支和当前开发分支。master永远是稳定版本&am…

花几千上万学习Java,真没必要!(十九)

1、StringBuilder&#xff1a; 测试代码1&#xff1a; package stringbuilder.com; import java.util.ArrayList; import java.util.List; public class StringBuilderExample { public static void main(String[] args) { // 初始化StringBuilder StringBuilder sb n…

腾讯会议产品策划的成长之路:从万字文档到功能落地的实战经验

腾讯会议产品策划的成长之路&#xff1a;从万字文档到功能落地的实战经验 在腾讯会议的产品团队中&#xff0c;有这样一位产品策划&#xff0c;他以其出色的逻辑思维、全局观念以及扎实的执行力&#xff0c;在团队中发挥着举足轻重的作用。他就是林陪同&#xff0c;一个自称“会…

css font 优化

文章目录 使用 font-display 控制字体加载预加载关键字体选择合适的字体文件类型按需创建字体文件HTTP 缓存优化 使用 font-display 控制字体加载 避免字体加载导致的空白 block&#xff1a;浏览器在短暂的阻塞期内不显示任何文本&#xff0c;直到字体加载完成。这可能导致页…

JAVA进阶学习12

文章目录 一、File类1.1 File对象的构造1.2 File对象的常见方法判断功能的方法获取功能的方法绝对路径和相对路径创建删除功能的方法 1.3 File的常用遍历方法1.4 File获取并遍历的其他方法1.5 用法举例二、IO流2.1 IO的分类2.2 字节流的方法概述2.2.1 FileOutputStream2.2.2 Fi…

如何配置Memcached以减少对数据库的直接访问

如何配置Memcached以减少对数据库的直接访问 1. 引言 在现代应用程序中&#xff0c;数据库通常是性能瓶颈的主要来源之一。通过使用Memcached&#xff0c;开发者可以显著减少数据库的负载&#xff0c;提高应用程序的响应速度。本文将详细介绍如何配置Memcached&#xff0c;以…

UE4-字体导入

一.字体导入 方法一&#xff1a; 然后通过导入将自己想要的字体导入到项目中&#xff0c;也可以直接将我们放在桌面的字体直接拖入到我们的内容浏览器中。 但是要注意想要发售游戏的话不可以这样导入微软的字体&#xff0c;因为Windows自带基本都有版权&#xff0c;所以最…

odoo17创建一个默认UI视图

XML 数据文件 当要加载的数据具有简单格式时&#xff0c;CSV 格式很方便。当格式更复杂时&#xff08;例如&#xff0c;加载视图或电子邮件模板的结构&#xff09;&#xff0c;我们使用 XML 格式。例如&#xff0c;此帮助字段包含 HTML 标记。虽然可以通过 CSV 文件加载此类…

明星应援系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;线上应援管理&#xff0c;线下应援管理&#xff0c;应援物品管理&#xff0c;购买订单管理&#xff0c;集资应援管理&#xff0c;集资订单管理&#xff0c;市集订单管理&#xff0…

极致竞争思维

老板请了几个毕业生&#xff0c;培训了一年&#xff0c;他们现在对业务的熟悉程度比我都熟悉多了&#xff0c;只是基本功不扎实&#xff0c;做出来的东西有很多问题。 老板请我来&#xff0c;给了我一个硬件总监的位置&#xff0c;实际上是要对他的整个系统做出诊断。 也是难为…