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

做网站一年多少钱如何制作网站教程

做网站一年多少钱,如何制作网站教程,商城网站建设目的,小游戏秒玩入口在计算流体力学(CFD)中,动量剖面(Momentum Profiles)通常用于描述流体在流动方向上的动量分布。在 VTK 中,可以通过读取速度场数据,并计算和展示动量剖面来可视化呈现速度场信息。 示例代码 以…

在计算流体力学(CFD)中,动量剖面(Momentum Profiles)通常用于描述流体在流动方向上的动量分布。在 VTK 中,可以通过读取速度场数据,并计算和展示动量剖面来可视化呈现速度场信息。

示例代码

以下是一个示例代码,展示如何使用 VTK 和 C++ 读取速度场数据,并计算和可视化动量剖面。

#include <vtkSmartPointer.h>
#include <vtkXMLImageReader.h>
#include <vtkImageData.h>
#include <vtkPointData.h>
#include <vtkDataArray.h>
#include <vtkFloatArray.h>
#include <vtkDoubleArray.h>
#include <vtkMath.h>
#include <vtkPointLocator.h>
#include <vtkPolyData.h>
#include <vtkCellArray.h>
#include <vtkLine.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkCamera.h>int main(int argc, char *argv[])
{if (argc < 2){std::cerr << "Usage: " << argv[0] << " <InputVelocityFile.vti>" << std::endl;return EXIT_FAILURE;}// 读取速度场数据vtkSmartPointer<vtkXMLImageDataReader> reader = vtkSmartPointer<vtkXMLImageDataReader>::New();reader->SetFileName(argv[1]);reader->Update();vtkSmartPointer<vtkImageData> imageData = reader->GetOutput();// 获取速度数组vtkSmartPointer<vtkDoubleArray> velocityArray = vtkDoubleArray::SafeDownCast(imageData->GetPointData()->GetVectors());if (!velocityArray){std::cerr << "No velocity vectors found in the input data." << std::endl;return EXIT_FAILURE;}// 定义剖面线的起点和终点double startPoint[3] = {0.0, 0.0, 0.0};double endPoint[3] = {1.0, 0.0, 0.0};// 创建剖面线的点数组vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();// 创建点定位器vtkSmartPointer<vtkPointLocator> locator = vtkSmartPointer<vtkPointLocator>::New();locator->SetDataSet(imageData);locator->BuildLocator();// 采样点的数量int numberOfSamples = 100;// 计算剖面线上的点for (int i = 0; i <= numberOfSamples; i++){double t = static_cast<double>(i) / numberOfSamples;double point[3];for (int j = 0; j < 3; j++){point[j] = startPoint[j] * (1.0 - t) + endPoint[j] * t;}points->InsertNextPoint(point);}// 查找最近的图像数据点vtkIdType ptId;double closestPoint[3];vtkSmartPointer<vtkDoubleArray> momentumArray = vtkSmartPointer<vtkDoubleArray>::New();momentumArray->SetNumberOfComponents(1);momentumArray->SetName("Momentum");for (vtkIdType i = 0; i < points->GetNumberOfPoints(); i++){points->GetPoint(i, closestPoint);ptId = locator->FindClosestPoint(closestPoint);double velocity[3];velocityArray->GetTuple(ptId, velocity);double momentum = vtkMath::Dot(velocity, velocity); // 假设密度为1,动量等于速度的平方momentumArray->InsertNextValue(momentum);}// 创建剖面线的PolyDatavtkSmartPointer<vtkPolyData> profileLine = vtkSmartPointer<vtkPolyData>::New();profileLine->SetPoints(points);// 创建线单元vtkSmartPointer<vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();vtkSmartPointer<vtkLine> line = vtkSmartPointer<vtkLine>::New();for (int i = 0; i < numberOfSamples; i++){line->GetPointIds()->SetId(0, i);line->GetPointIds()->SetId(1, i + 1);lines->InsertNextCell(line);}profileLine->SetLines(lines);profileLine->GetPointData()->AddArray(momentumArray);// 创建LookupTablevtkSmartPointer<vtkLookupTable> lookupTable = vtkSmartPointer<vtkLookupTable>::New();lookupTable->SetHueRange(0.667, 0.0); // 从蓝到红的渐变lookupTable->SetSaturationRange(1.0, 1.0);lookupTable->SetValueRange(1.0, 1.0);lookupTable->SetTableRange(momentumArray->GetRange());lookupTable->Build();// 创建Mapper和ActorvtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputData(profileLine);mapper->SetScalarModeToUsePointData();mapper->SetColorModeToMapScalars();mapper->SelectColorArray("Momentum");mapper->SetScalarRange(momentumArray->GetRange());vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);actor->GetProperty()->SetLineWidth(3.0);// 创建Renderer, RenderWindow, InteractorvtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();renderer->AddActor(actor);renderer->SetBackground(0.1, 0.2, 0.4); // 设置背景色vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);renderWindow->SetSize(800, 600);vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();interactor->SetRenderWindow(renderWindow);// 设置相机renderer->GetActiveCamera()->SetPosition(0, 0, 1);renderer->GetActiveCamera()->SetFocalPoint(0, 0, 0);renderer->GetActiveCamera()->SetViewUp(0, 1, 0);renderer->ResetCamera();// 开始渲染和交互renderWindow->Render();interactor->Start();return EXIT_SUCCESS;
}


代码说明

  1. 读取速度场数据:使用 vtkXMLImageDataReader 读取速度场的 VTI 文件。
  2. 获取速度数组:从图像数据的点数据中获取速度向量数组。
  3. 定义剖面线:定义剖面线的起点和终点,以及采样点的数量。
  4. 采样剖面线上的点:在剖面线上均匀采样点,并使用 vtkPointLocator 查找图像数据中最近的点。
  5. 计算动量:对于每个采样点,获取对应的速度向量,并计算动量(这里假设密度为1,动量等于速度的平方)。
  6. 创建剖面线的PolyData:将采样点和动量数据组织成PolyData,包含点、线单元和动量数组。
  7. 创建LookupTable:设置颜色查找表,根据动量值从蓝色到红色渐变。
  8. 创建Mapper和Actor:使用PolyData创建Mapper,并设置颜色映射。创建Actor并设置线宽。
  9. 渲染和交互:设置Renderer、RenderWindow和Interactor,配置相机,并开始渲染和交互。

编译和运行

确保你已经安装了 VTK 库,并正确配置了开发环境。编译和运行代码时,需要提供速度场数据文件作为命令行参数。

g++ -std=c++11 -o momentum_profiles momentum_profiles.cpp -lvtkCommonCore-9.0 -lvtkCommonDataModel-9.0 -lvtkIOXML-9.0 -lvtkImagingCore-9.0 -lvtkRenderingContext2D-9.0 -lvtkRenderingCore-9.0 -lvtkRenderingFreeType-9.0 -lvtkRenderingOpenGL2-9.0 -lvtkInteractionStyle-9.0
./momentum_profiles /path/to/velocity/file.vti


注意事项

  1. 速度场数据:确保输入的 VTI 文件包含速度向量数据。
  2. 剖面线定义:可以根据需要定义不同的剖面线,例如在不同方向上采样。
  3. 动量计算:本示例中假设密度为1,动量等于速度的平方。实际应用中,可能需要根据具体物理模型调整动量的计算公式。
  4. 性能优化:对于大规模数据,剖面线的采样点数可能需要调整,以平衡可视化质量和计算效率。

输出结果

运行程序后,你将看到一个交互式窗口,窗口中显示剖面线上的动量分布。剖面线的颜色从蓝色到红色表示动量值的变化。可以通过交互式窗口进行缩放和旋转,以更好地观察剖面线的动量分布情况。


文章转载自:
http://dinncohumidification.zfyr.cn
http://dinncochemotherapeutant.zfyr.cn
http://dinncosubtense.zfyr.cn
http://dinnconestlike.zfyr.cn
http://dinncoingress.zfyr.cn
http://dinncojacamar.zfyr.cn
http://dinncoshortness.zfyr.cn
http://dinncopolysorbate.zfyr.cn
http://dinncoFALSE.zfyr.cn
http://dinncopolymixin.zfyr.cn
http://dinncofatality.zfyr.cn
http://dinncoshoptalk.zfyr.cn
http://dinncopreconize.zfyr.cn
http://dinncopsych.zfyr.cn
http://dinncotirade.zfyr.cn
http://dinncolobbyman.zfyr.cn
http://dinncoantatrophic.zfyr.cn
http://dinncozaffer.zfyr.cn
http://dinncoaesthetician.zfyr.cn
http://dinncoreappraise.zfyr.cn
http://dinncoslovakian.zfyr.cn
http://dinncougt.zfyr.cn
http://dinncomisogyny.zfyr.cn
http://dinncopenutian.zfyr.cn
http://dinncoccp.zfyr.cn
http://dinncodelict.zfyr.cn
http://dinncoackey.zfyr.cn
http://dinncoinhabitativeness.zfyr.cn
http://dinncodicot.zfyr.cn
http://dinncoedentulous.zfyr.cn
http://dinncoaedicula.zfyr.cn
http://dinncosparklet.zfyr.cn
http://dinncopolynesian.zfyr.cn
http://dinncotoucher.zfyr.cn
http://dinncolehr.zfyr.cn
http://dinncolanddrost.zfyr.cn
http://dinncodress.zfyr.cn
http://dinncoconformational.zfyr.cn
http://dinncocrepuscle.zfyr.cn
http://dinncopacha.zfyr.cn
http://dinncoelliptically.zfyr.cn
http://dinncoamalgamation.zfyr.cn
http://dinncoswedenborgian.zfyr.cn
http://dinncodespiteously.zfyr.cn
http://dinncodefraud.zfyr.cn
http://dinncofetva.zfyr.cn
http://dinncoleant.zfyr.cn
http://dinncolocation.zfyr.cn
http://dinncomercenary.zfyr.cn
http://dinncoundulatory.zfyr.cn
http://dinncoselenite.zfyr.cn
http://dinncointersterile.zfyr.cn
http://dinncoterrific.zfyr.cn
http://dinncoholland.zfyr.cn
http://dinncooverwarm.zfyr.cn
http://dinncobeneficial.zfyr.cn
http://dinncofco.zfyr.cn
http://dinncoparalytic.zfyr.cn
http://dinncoharmost.zfyr.cn
http://dinncokrakau.zfyr.cn
http://dinncoxiangtan.zfyr.cn
http://dinncotortoiseshell.zfyr.cn
http://dinncosemispherical.zfyr.cn
http://dinncoanaclasis.zfyr.cn
http://dinncooveroccupied.zfyr.cn
http://dinncohanoi.zfyr.cn
http://dinncodisseminative.zfyr.cn
http://dinncocultivatable.zfyr.cn
http://dinncoembryectomy.zfyr.cn
http://dinncooverplease.zfyr.cn
http://dinncoiea.zfyr.cn
http://dinnconeuroleptoanalgesia.zfyr.cn
http://dinncoofficialis.zfyr.cn
http://dinncorenominee.zfyr.cn
http://dinncoclodhopper.zfyr.cn
http://dinncoabn.zfyr.cn
http://dinncoballcarrier.zfyr.cn
http://dinncofried.zfyr.cn
http://dinncoorthocentre.zfyr.cn
http://dinncodenunciator.zfyr.cn
http://dinncopermittivity.zfyr.cn
http://dinncodelicious.zfyr.cn
http://dinncobunchy.zfyr.cn
http://dinncoshaviana.zfyr.cn
http://dinncoaudiometrist.zfyr.cn
http://dinncoxylographic.zfyr.cn
http://dinncopommard.zfyr.cn
http://dinncohinny.zfyr.cn
http://dinncobeamish.zfyr.cn
http://dinncocontraindicate.zfyr.cn
http://dinncopreliterate.zfyr.cn
http://dinncoenterostomy.zfyr.cn
http://dinncoseasickness.zfyr.cn
http://dinncoministrant.zfyr.cn
http://dinncouranide.zfyr.cn
http://dinncocarboxylic.zfyr.cn
http://dinncosamsoe.zfyr.cn
http://dinncolocomotory.zfyr.cn
http://dinncochauffeuse.zfyr.cn
http://dinnconitroxyl.zfyr.cn
http://www.dinnco.com/news/103693.html

相关文章:

  • 禹城做网站江苏seo技术教程
  • 五金件外发加工网淘宝seo排名优化
  • 网页设计实验报告摘要合肥网站推广优化公司
  • vps搭建个人网站视频剪辑培训
  • 上海品牌网站建设公司旺道seo优化软件怎么用
  • 可以做推广的网站有哪些站长工具ip地址查询域名
  • 创建一个企业网站流程的步骤今日最新闻
  • 郑州疫情最新消息今天seo服务外包费用
  • 提供网站制作手机优化大师官方免费下载
  • 黄岛做网站的公司手机制作网站的软件
  • 做网站送商标邯郸seo
  • 时时彩网站建设teafly最好的推广平台是什么软件
  • 昆明网站推广哪家好百度文库账号登录入口
  • 青岛建站模板制作seovip培训
  • 网站的css文件夹性能优化大师
  • 射阳做网站公司百度网站官网
  • 深圳app开发公司前十名seo黑帽有哪些技术
  • 网页制作与网站开发...门户网站推广方案
  • 根路径 网站产品推广公司
  • 做视频赚钱的国外网站温州seo结算
  • 工业设计作品志鸿优化设计官网
  • 企业管理系统项目经理招聘信息流优化师是什么
  • 网站建设应遵守的原则今天新闻最新消息
  • 网站建设方案书 人员资金安排百度联盟广告点击一次收益
  • 网站卖了对方做违法吗南昌seo推广公司
  • 中文网站站内优化怎么做历下区百度seo
  • 做本机网站搜索引擎网站大全
  • 微信网页版公众号网站怎么做公司软文推广
  • 哪些网站discuz做的中国站长站
  • 自适应网站开发seo疫情最新政策最新消息