当前位置: 首页 > news >正文

第05章 17 Contour 过滤器介绍与例子

vtkContourFilter 是 VTK(Visualization Toolkit)中的一个关键类,用于从输入数据生成等值线或等值面。它是基于阈值的过滤器,可以从标量字段中提取等值线或等值面。vtkContourFilter 的核心功能是根据用户指定的值生成等值线或等值面,并将其表示为多边形网格。

vtkContourFilter 的主要功能

  • 等值线/等值面生成:根据用户指定的等值(通常是标量值)生成等值线或等值面。
  • 多重等值线/等值面:可以同时生成多个等值线或等值面。
  • 支持多种数据类型:可以处理结构化网格、非结构化网格、点云等多种数据类型。
  • 插值:在生成等值线/等值面时,支持插值操作,以确保生成的表面平滑。

vtkContourFilter 的常用方法

  • SetValue(int index, double value):设置第index个等值线的值为value
  • GenerateValues(int numContours, double range[2]):自动生成numContours个等值线,范围在range之间。
  • SetInputData(vtkDataObject input):设置输入数据。
  • Update():更新过滤器并生成输出数据。

vtkContourFilter 的衍生类

vtkContourFilter 是 VTK 中用于生成等值线/等值面的基础类。根据不同的应用场景和需求,VTK 提供了一些专门化的衍生类,这些类继承自 vtkContourFilter,并在其基础上进行了功能扩展或优化。以下是一些常见的 vtkContourFilter 衍生类:

1. vtkMarchingCubes
  • 用途:用于从体积数据(如 CT 或 MRI 扫描数据)中提取等值面。
  • 特点:使用 marching cubes 算法,能够生成高质量的多边形表面。
  • 应用场景:医学图像处理、三维重建。
2. vtkDiscreteMarchingCubes
  • 用途:专门用于处理离散数据(如标签映射数据),生成具有明确标签的等值面。
  • 特点:生成的等值面具有清晰的边界,适用于分割结果的可视化。
  • 应用场景:医学图像分割、地质数据可视化。
3. vtkFlyingEdges3D
  • 用途:用于从三维体积数据中提取等值面。
  • 特点:使用 flying edges 算法,相比于 marching cubes,计算速度更快,生成的表面质量更高。
  • 应用场景:三维体积数据的实时渲染、体绘制。
4. vtkBandedPolyDataContourFilter
  • 用途:用于生成带状等值线。
  • 特点:可以生成多个连续的等值线,通常用于数据的可视化。
  • 应用场景:气象数据中的等压线、地形数据中的等高线。
5. vtkSynchronizedTemplates3D
  • 用途:用于从三维体积数据中生成等值面。
  • 特点:使用同步模板算法,可以生成平滑的等值面。
  • 应用场景:三维体积数据的可视化。
6. vtkSynchronizedTemplatesCutter3D
  • 用途:类似于 vtkSynchronizedTemplates3D,但支持通过其他几何体进行切割。
  • 特点:可以生成与特定几何体相交的等值面。
  • 应用场景:定制化的三维数据可视化。

总结

vtkContourFilter 及其衍生类是 VTK 中用于生成等值线/等值面的核心工具。根据不同的应用场景和需求,用户可以选择合适的类来生成高质量的等值面。例如,vtkMarchingCubes 适用于医学图像中的三维重建,而 vtkFlyingEdges3D 则更适合实时渲染和体绘制。

1. vtkContourFilter

#include <vtkSmartPointer.h>
#include <vtkMarchingCubes.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSampleFunction.h>
#include <vtkSphere.h>
#include <vtkContourFilter.h>int main(int, char *[])
{vtkSmartPointer<vtkSphere> sphere = vtkSmartPointer<vtkSphere>::New();sphere->SetCenter(0.0, 0.0, 0.0);sphere->SetRadius(1.0);vtkSmartPointer<vtkSampleFunction> sample = vtkSmartPointer<vtkSampleFunction>::New();sample->SetImplicitFunction(sphere);sample->SetModelBounds(-2.5, 2.5, -2.5, 2.5, -2.5, 2.5);sample->SetSampleDimensions(50, 50, 50);sample->SetCapping(true);sample->SetCapValue(100);sample->Update();vtkSmartPointer<vtkContourFilter> contourFilter = vtkSmartPointer<vtkContourFilter>::New();contourFilter->SetInputConnection(sample->GetOutputPort());contourFilter->GenerateValues(5, 0.0, 1.0); // 生成5个等值面contourFilter->Update();vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(contourFilter->GetOutputPort());mapper->ScalarVisibilityOff();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);actor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);renderer->AddActor(actor);renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());renderWindow->Render();renderWindowInteractor->Start();return 0;
}

解释

  1. 生成隐式几何体:使用 vtkSphere 生成一个球体。
  2. 采样函数:使用 vtkSampleFunction 对球体进行采样,生成一个标量场。
  3. 等值面生成:使用 vtkContourFilter 从采样结果中提取多个等值面。
  4. 渲染:使用 VTK 的渲染管道将等值面显示出来。

2. vtkMarchingCubes

#include <vtkSmartPointer.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSampleFunction.h>
#include <vtkSphere.h>
#include <vtkMarchingCubes.h>int main(int, char *[])
{vtkSmartPointer<vtkSphere> sphere = vtkSmartPointer<vtkSphere>::New();sphere->SetCenter(0.0, 0.0, 0.0);sphere->SetRadius(1.0);vtkSmartPointer<vtkSampleFunction> sample = vtkSmartPointer<vtkSampleFunction>::New();sample->SetImplicitFunction(sphere);sample->SetModelBounds(-2.5, 2.5, -2.5, 2.5, -2.5, 2.5);sample->SetSampleDimensions(50, 50, 50);sample->SetCapping(true);sample->SetCapValue(100);sample->Update();vtkSmartPointer<vtkMarchingCubes> marchingCubes = vtkSmartPointer<vtkMarchingCubes>::New();marchingCubes->SetInputConnection(sample->GetOutputPort());marchingCubes->SetValue(0, 0.0); // 生成单个等值面marchingCubes->Update();vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(marchingCubes->GetOutputPort());mapper->ScalarVisibilityOff();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);actor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);renderer->AddActor(actor);renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());renderWindow->Render();renderWindowInteractor->Start();return 0;
}

解释

  1. 生成隐式几何体:使用 vtkSphere 生成一个球体。
  2. 采样函数:使用 vtkSampleFunction 对球体进行采样,生成一个标量场。
  3. 等值面生成:使用 vtkMarchingCubes 从采样结果中提取单个等值面。
  4. 渲染:使用 VTK 的渲染管道将等值面显示出来。

3. vtkDiscreteMarchingCubes

#include <vtkSmartPointer.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSampleFunction.h>
#include <vtkSphere.h>
#include <vtkDiscreteMarchingCubes.h>int main(int, char *[])
{vtkSmartPointer<vtkSphere> sphere = vtkSmartPointer<vtkSphere>::New();sphere->SetCenter(0.0, 0.0, 0.0);sphere->SetRadius(1.0);vtkSmartPointer<vtkSampleFunction> sample = vtkSmartPointer<vtkSampleFunction>::New();sample->SetImplicitFunction(sphere);sample->SetModelBounds(-2.5, 2.5, -2.5, 2.5, -2.5, 2.5);sample->SetSampleDimensions(50, 50, 50);sample->SetCapping(true);sample->SetCapValue(100);sample->Update();vtkSmartPointer<vtkDiscreteMarchingCubes> discreteMarchingCubes = vtkSmartPointer<vtkDiscreteMarchingCubes>::New();discreteMarchingCubes->SetInputConnection(sample->GetOutputPort());discreteMarchingCubes->SetValue(0, 100); // 生成单个等值面discreteMarchingCubes->Update();vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(discreteMarchingCubes->GetOutputPort());mapper->ScalarVisibilityOff();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);actor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);renderer->AddActor(actor);renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());renderWindow->Render();renderWindowInteractor->Start();return 0;
}

解释

  1. 生成隐式几何体:使用 vtkSphere 生成一个球体。
  2. 采样函数:使用 vtkSampleFunction 对球体进行采样,生成一个标量场。
  3. 等值面生成:使用 vtkDiscreteMarchingCubes 从采样结果中提取单个离散等值面。
  4. 渲染:使用 VTK 的渲染管道将等值面显示出来。

4. vtkFlyingEdges3D

#include <vtkSmartPointer.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSampleFunction.h>
#include <vtkSphere.h>
#include <vtkFlyingEdges3D.h>int main(int, char *[])
{vtkSmartPointer<vtkSphere> sphere = vtkSmartPointer<vtkSphere>::New();sphere->SetCenter(0.0, 0.0, 0.0);sphere->SetRadius(1.0);vtkSmartPointer<vtkSampleFunction> sample = vtkSmartPointer<vtkSampleFunction>::New();sample->SetImplicitFunction(sphere);sample->SetModelBounds(-2.5, 2.5, -2.5, 2.5, -2.5, 2.5);sample->SetSampleDimensions(50, 50, 50);sample->SetCapping(true);sample->SetCapValue(100);sample->Update();vtkSmartPointer<vtkFlyingEdges3D> flyingEdges = vtkSmartPointer<vtkFlyingEdges3D>::New();flyingEdges->SetInputConnection(sample->GetOutputPort());flyingEdges->GenerateValues(5, 0.0, 1.0); // 生成5个等值面flyingEdges->Update();vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(flyingEdges->GetOutputPort());mapper->ScalarVisibilityOff();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);actor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);renderer->AddActor(actor);renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());renderWindow->Render();renderWindowInteractor->Start();return 0;
}

解释

  1. 生成隐式几何体:使用 vtkSphere 生成一个球体。
  2. 采样函数:使用 vtkSampleFunction 对球体进行采样,生成一个标量场。
  3. 等值面生成:使用 vtkFlyingEdges3D 从采样结果中提取多个等值面。
  4. 渲染:使用 VTK 的渲染管道将等值面显示出来。

5. vtkBandedPolyDataContourFilter

#include <vtkSmartPointer.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSampleFunction.h>
#include <vtkSphere.h>
#include <vtkBandedPolyDataContourFilter.h>int main(int, char *[])
{vtkSmartPointer<vtkSphere> sphere = vtkSmartPointer<vtkSphere>::New();sphere->SetCenter(0.0, 0.0, 0.0);sphere->SetRadius(1.0);vtkSmartPointer<vtkSampleFunction> sample = vtkSmartPointer<vtkSampleFunction>::New();sample->SetImplicitFunction(sphere);sample->SetModelBounds(-2.5, 2.5, -2.5, 2.5, -2.5, 2.5);sample->SetSampleDimensions(50, 50, 50);sample->SetCapping(true);sample->SetCapValue(100);sample->Update();vtkSmartPointer<vtkBandedPolyDataContourFilter> bandedContourFilter = vtkSmartPointer<vtkBandedPolyDataContourFilter>::New();bandedContourFilter->SetInputConnection(sample->GetOutputPort());bandedContourFilter->GenerateValues(5, 0.0, 1.0); // 生成5个带状等值线bandedContourFilter->Update();vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(bandedContourFilter->GetOutputPort());mapper->ScalarVisibilityOff();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);actor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);renderer->AddActor(actor);renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());renderWindow->Render();renderWindowInteractor->Start();return 0;
}

解释

  1. 生成隐式几何体:使用 vtkSphere 生成一个球体。
  2. 采样函数:使用 vtkSampleFunction 对球体进行采样,生成一个标量场。
  3. 等值线生成:使用 vtkBandedPolyDataContourFilter 从采样结果中提取多个带状等值线。
  4. 渲染:使用 VTK 的渲染管道将等值线显示出来。

6. vtkSynchronizedTemplates3D

#include <vtkSmartPointer.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSampleFunction.h>
#include <vtkSphere.h>
#include <vtkSynchronizedTemplates3D.h>int main(int, char *[])
{vtkSmartPointer<vtkSphere> sphere = vtkSmartPointer<vtkSphere>::New();sphere->SetCenter(0.0, 0.0, 0.0);sphere->SetRadius(1.0);vtkSmartPointer<vtkSampleFunction> sample = vtkSmartPointer<vtkSampleFunction>::New();sample->SetImplicitFunction(sphere);sample->SetModelBounds(-2.5, 2.5, -2.5, 2.5, -2.5, 2.5);sample->SetSampleDimensions(50, 50, 50);sample->SetCapping(true);sample->SetCapValue(100);sample->Update();vtkSmartPointer<vtkSynchronizedTemplates3D> syncTemplates = vtkSmartPointer<vtkSynchronizedTemplates3D>::New();syncTemplates->SetInputConnection(sample->GetOutputPort());syncTemplates->SetValue(0, 0.0); // 生成单个等值面syncTemplates->Update();vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(syncTemplates->GetOutputPort());mapper->ScalarVisibilityOff();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);actor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);renderer->AddActor(actor);renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());renderWindow->Render();renderWindowInteractor->Start();return 0;
}

解释

  1. 生成隐式几何体:使用 vtkSphere 生成一个球体。
  2. 采样函数:使用 vtkSampleFunction 对球体进行采样,生成一个标量场。
  3. 等值面生成:使用 vtkSynchronizedTemplates3D 从采样结果中提取单个等值面。
  4. 渲染:使用 VTK 的渲染管道将等值面显示出来。

这些示例代码展示了如何使用 vtkContourFilter 及其衍生类来生成等值线或等值面,并将其渲染出来。每个类都有其特定的应用场景和优势,可以根据具体需求选择合适的类。

 

相关文章:

第05章 17 Contour 过滤器介绍与例子

vtkContourFilter 是 VTK&#xff08;Visualization Toolkit&#xff09;中的一个关键类&#xff0c;用于从输入数据生成等值线或等值面。它是基于阈值的过滤器&#xff0c;可以从标量字段中提取等值线或等值面。vtkContourFilter 的核心功能是根据用户指定的值生成等值线或等值…...

【落羽的落羽 数据结构篇】顺序表

文章目录 一、线性表二、顺序表1. 概念与分类2. 准备工作3. 静态顺序表4. 动态顺序表4.1 定义顺序表结构4.2 顺序表的初始化4.3 检查空间是否足够4.3 尾部插入数据4.4 头部插入数据4.5 尾部删除数据4.6 头部删除数据4.7 在指定位置插入数据4.8 在指定位置删除数据4.9 顺序表的销…...

AI编程:如何编写提示词

这是小卷对AI编程工具学习的第2篇文章&#xff0c;今天讲讲如何编写AI编程的提示词&#xff0c;并结合实际功能需求案例来进行开发 1.编写提示词的技巧 好的提示词应该是&#xff1a;目标清晰明确&#xff0c;具有针对性&#xff0c;能引导模型理解问题 下面是两条提示词的对…...

DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?

近年来&#xff0c;人工智能&#xff08;AI&#xff09;领域发展迅猛&#xff0c;大语言模型&#xff08;LLMs&#xff09;为通用人工智能&#xff08;AGI&#xff09;的发展开辟了道路。OpenAI 的 o1 模型表现非凡&#xff0c;它引入的创新性推理时缩放技术显著提升了推理能力…...

高阶C语言|深入理解字符串函数和内存函数

文章目录 前言1.求字符串长度1.1 字符串长度函数&#xff1a;strlen模拟实现 2.长度不受限制的字符串函数2.1 字符串拷贝函数&#xff1a;strcpy模拟实现 2.2 字符串连接函数&#xff1a;strcat模拟实现 2.3 字符串比较函数&#xff1a;strcmp模拟实现 3.长度受限制的字符串函数…...

UE学习日志#17 C++笔记#3 基础复习3

19.2 [[maybe_unused]] 禁止编译器在未使用某些内容时发出警告 19.3 [[noreturn]] 永远不会把控制权返回给调用点 19.4 [[deprecated]] 标记为已弃用&#xff0c;仍然可以使用但是不鼓励使用 可以加参数表示弃用的原因[[deprecated("")]] 19.5 [[likely]]和[[un…...

团体程序设计天梯赛-练习集——L1-028 判断素数

前言 一道10分的题目&#xff0c;相对来说比较简单&#xff0c;思考的时候要仔细且活跃&#xff0c;有时候在写代码的时候一些代码的出现很多余&#xff0c;并且会影响最后的结果 L1-028 判断素数 本题的目标很简单&#xff0c;就是判断一个给定的正整数是否素数。 输入格式…...

从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(基础图形库实现)

目录 基础图形库的抽象 抽象图形 抽象点 设计我们的抽象 实现我们的抽象 测试 抽象线 设计我们的抽象 实现我们的抽象 绘制垂直的和水平的线 使用Bresenham算法完成任意斜率的绘制 绘制三角形和矩形 矩形 三角形 实现 绘制圆&#xff0c;圆弧和椭圆 继续我们的…...

创新创业计划书|建筑垃圾资源化回收

目录 第1部分 公司概况........................................................................ 1 第2部分 产品/服务...................................................................... 3 第3部分 研究与开发.................................................…...

反射、枚举以及lambda表达式

一.反射 1.概念&#xff1a;Java的反射&#xff08;reflection&#xff09;机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff0c;既然能拿到那么&am…...

ROS应用之IMU碰撞检测与接触事件识别

前言 碰撞检测与接触事件识别是机器人与环境交互中的重要任务&#xff0c;尤其是在复杂的动态环境中。IMU&#xff08;惯性测量单元&#xff09;作为一种高频率、低延迟的传感器&#xff0c;因其能够检测加速度、角速度等动态变化而成为实现碰撞检测的核心手段之一。结合先进的…...

docker安装MySQL8:docker离线安装MySQL、docker在线安装MySQL、MySQL镜像下载、MySQL配置、MySQL命令

一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull mysql:8.0.41 2、离线包下载 两种方式&#xff1a; 方式一&#xff1a; -&#xff09;在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -&#xff09;导出 # 导出镜…...

android安卓用Rime

之前 [1] 在 iOS 配置用上自改方案 [2]&#xff0c;现想在安卓也用上。Rime 主页推荐了两个安卓平台支持 rime 的输入法 [3]&#xff1a; 同文 Tongwen Rime Input Method Editor&#xff0c;但在我的 Realme X2 Pro 上似乎有 bug&#xff1a;弹出的虚拟键盘只有几个 switcher…...

每日一博 - 三高系统架构设计:高性能、高并发、高可用性解析

文章目录 引言一、高性能篇1.1 高性能的核心意义 1.2 影响系统性能的因素1.3 高性能优化方法论1.3.1 读优化&#xff1a;缓存与数据库的结合1.3.2 写优化&#xff1a;异步化处理 1.4 高性能优化实践1.4.1 本地缓存 vs 分布式缓存1.4.2 数据库优化 二、高并发篇2.1 高并发的核心…...

C++ 中的引用(Reference)

在 C 中&#xff0c;引用&#xff08;Reference&#xff09;是一种特殊的变量类型&#xff0c;它提供了一个已存在变量的别名。引用在很多场景下都非常有用&#xff0c;比如函数参数传递、返回值等。下面将详细介绍 C 引用的相关知识。 1. 引用的基本概念和语法 引用是已存在…...

负荷预测算法模型

1. 时间序列分析方法 时间序列分析方法是最早被用来进行电力负荷预测的方法之一&#xff0c;它基于历史数据来构建数学模型&#xff0c;以描述时间与负荷值之间的关系。这种方法通常只考虑时间变量&#xff0c;不需要大量的输入数据&#xff0c;因此计算速度快。然而&#xff…...

【C语言】内存管理

【C语言】内存管理 文章目录 【C语言】内存管理1.概念2.库函数3.动态分配内存malloccalloc 4.重新调整内存的大小和释放内存reallocfree 1.概念 C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。 在 C 语言中&#xff0c;内存是通过…...

deepseek大模型本机部署

2024年1月20日晚&#xff0c;中国DeepSeek发布了最新推理模型DeepSeek-R1&#xff0c;引发广泛关注。这款模型不仅在性能上与OpenAI的GPT-4相媲美&#xff0c;更以开源和创新训练方法&#xff0c;为AI发展带来了新的可能性。 本文讲解如何在本地部署deepseek r1模型。deepseek官…...

动态规划DP 最长上升子序列模型 拦截导弹(题目分析+C++完整代码)

概览检索 动态规划DP 最长上升子序列模型 拦截导弹 原题链接 AcWiing 1010. 拦截导弹 题目描述 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。 但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每…...

缩位求和——蓝桥杯

1.题目描述 在电子计算机普及以前&#xff0c;人们经常用一个粗略的方法来验算四则运算是否正确。 比如&#xff1a;248153720248153720 把乘数和被乘数分别逐位求和&#xff0c;如果是多位数再逐位求和&#xff0c;直到是 1 位数&#xff0c;得 24814>145 156 56 而…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...