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

网站推广广州市地图

网站推广,广州市地图,wordpress archlinux,个性flash网站判断 一个点 ,判断是否在风格 stl 模型内部#xff0c;或表面#xff1a; 目录 1.方案一#xff1a;使用vtkCellLocator FindClosestPoint 找到模型上距离给定点最近的一点#xff0c;计算两点的距离 #xff0c;小于某一阈值 则认为此点在模型上#xff1b; 2.方案二…判断 一个点 ,判断是否在风格 stl 模型内部或表面 目录 1.方案一使用vtkCellLocator  FindClosestPoint 找到模型上距离给定点最近的一点计算两点的距离 小于某一阈值 则认为此点在模型上 2.方案二 使用 vtkKdTreePointLocator 3.方案三 使用 vtkSelectEnclosedPoints 1.方案一使用vtkCellLocator  FindClosestPoint 找到模型上距离给定点最近的一点计算两点的距离 小于某一阈值 则认为此点在模型上 vtkCellLocator本身是一个octree。典型的用法就是求最近的单元或者点 bool CheckPointInsidePolyData(vtkPolyData * poly, double* pt) {bool insidefalse; auto cellLocator vtkSmartPointervtkCellLocator::New();cellLocator-SetDataSet(poly);cellLocator-BuildLocator();auto assistCell vtkSmartPointervtkGenericCell::New();double closestPoint[3];//the coordinates of the closest point will be returned heredouble closestPointDist2; //the squared distance to the closest point will be returned herevtkIdType cellId; //the cell id of the cell containing the closest point will be returned hereint subId-1;cellLocator-FindClosestPoint(point, closestPoint, assistCell, cellId, subId, closestPointDist2);if (-1! subIdclosestPointDist2 0.001){return true;}return inside; } 2.方案二 使用 vtkKdTreePointLocator 但这个只能找到最新的点还需要自己判断一下距离 官方样例 #include vtkIdList.h #include vtkKdTreePointLocator.h #include vtkNew.h #include vtkPoints.h #include vtkPolyData.hint main(int, char*[]) {// Setup point coordinatesdouble x[3] {1.0, 0.0, 0.0};double y[3] {0.0, 1.0, 0.0};double z[3] {0.0, 0.0, 1.0};vtkNewvtkPoints points;points-InsertNextPoint(x);points-InsertNextPoint(y);points-InsertNextPoint(z);vtkNewvtkPolyData polydata;polydata-SetPoints(points);// Create the treevtkNewvtkKdTreePointLocator kDTree;kDTree-SetDataSet(polydata);kDTree-BuildLocator();double testPoint[3] {2.0, 0.0, 0.0};// Find the closest points to TestPointvtkIdType iD kDTree-FindClosestPoint(testPoint);std::cout The closest point is point iD std::endl;// Get the coordinates of the closest pointdouble closestPoint[3];kDTree-GetDataSet()-GetPoint(iD, closestPoint);std::cout Coordinates: closestPoint[0] closestPoint[1] closestPoint[2] std::endl;return EXIT_SUCCESS; } 3.方案三 使用 vtkSelectEnclosedPoints vtkSelectEnclosedPoints类可以判断标记点是否在封闭表面内。 vtkSelectEnclosedPoints是一个Filter它计算所有输入点以确定它们是否位于封闭曲面中。过滤器生成一个0,1掩码以vtkDataArray的形式指示点是在提供的曲面的外部掩码值0还是内部掩码值1(输出vtkDataArray的名称是“SelectedPoints”。 运行过滤器后可以通过调用IsInsideptId方法来查询点是否在内部/外部。 样例判断三个点是否在立方体内 注意在立方体边上的点不属于在立方体内部 CODE #include vtkVersion.h #include vtkPolyData.h #include vtkPointData.h #include vtkCubeSource.h #include vtkSmartPointer.h #include vtkSelectEnclosedPoints.h #include vtkIntArray.h #include vtkDataArray.h #include vtkProperty.h #include vtkPolyDataMapper.h #include vtkActor.h #include vtkRenderWindow.h #include vtkRenderer.h #include vtkRenderWindowInteractor.hint main(int, char*[]) {vtkNewvtkCubeSource cubeSource;cubeSource-Update();vtkPolyData* cube cubeSource-GetOutput();double testInside[3] { 0.0, 0.0, 0.0 };double testOutside[3] { 0.7, 0.0, 0.0 };double testBorderOutside[3] { 0.5, 0.0, 0.0 };vtkNewvtkPoints points;points-InsertNextPoint(testInside);points-InsertNextPoint(testOutside);points-InsertNextPoint(testBorderOutside);vtkNewvtkPolyData pointsPolydata;pointsPolydata-SetPoints(points);//Points inside testvtkNewvtkSelectEnclosedPoints selectEnclosedPoints;selectEnclosedPoints-SetInputData(pointsPolydata);selectEnclosedPoints-SetSurfaceData(cube);selectEnclosedPoints-Update();for (unsigned int i 0; i 3; i) {std::cout Point i : selectEnclosedPoints-IsInside(i) std::endl;}vtkDataArray* insideArray vtkDataArray::SafeDownCast(selectEnclosedPoints-GetOutput()-GetPointData()-GetArray(SelectedPoints));for (vtkIdType i 0; i insideArray-GetNumberOfTuples(); i) {std::cout i : insideArray-GetComponent(i, 0) std::endl;}//Cube mapper, actorvtkNewvtkPolyDataMapper cubeMapper;cubeMapper-SetInputConnection(cubeSource-GetOutputPort());vtkNewvtkActor cubeActor;cubeActor-SetMapper(cubeMapper);cubeActor-GetProperty()-SetOpacity(0.5);//First, apply vtkVertexGlyphFilter to make cells around points, vtk only render cells.vtkNewvtkVertexGlyphFilter vertexGlyphFilter;vertexGlyphFilter-AddInputData(pointsPolydata);vertexGlyphFilter-Update();vtkNewvtkPolyDataMapper pointsMapper;pointsMapper-SetInputConnection(vertexGlyphFilter-GetOutputPort());vtkNewvtkActor pointsActor;pointsActor-SetMapper(pointsMapper);pointsActor-GetProperty()-SetPointSize(5); pointsActor-GetProperty()-SetColor(1.0, 0.0, 0);//Create a renderer, render window, and interactorvtkNewvtkRenderer renderer;vtkNewvtkRenderWindow renderWindow;renderWindow-AddRenderer(renderer);vtkNewvtkRenderWindowInteractor renderWindowInteractor;renderWindowInteractor-SetRenderWindow(renderWindow);// Add the actor to the scenerenderer-AddActor(cubeActor);renderer-AddActor(pointsActor);renderer-SetBackground(.0, 1, .0);renderWindow-Render();renderWindowInteractor-Start();return EXIT_SUCCESS; } 输出 Point 0: 1 Point 1: 0 Point 2: 0 0 : 1 1 : 0 2 : 0
http://www.hkea.cn/news/14493056/

相关文章:

  • 重庆网站开发培训网站页面怎么算
  • 南通制作网站公司东丽网站建设
  • 自己做的网站打开空白网站开发费用一般为多少
  • 汕头网站制作公司网络推广的主要工作内容
  • html网站结构解决方案wordpress导入链接生成文章
  • html手机网站模板wordpress多级菜单插件
  • 做网站如何找广告商贵阳学网站建设
  • 中国建设银行 云南 网站首页合川做网站
  • 一般的网站建设网络广告的传播技巧
  • wordpress网站之间互联做网站用虚拟主机还是服务器
  • 创业 做网站网站快照查询
  • 深圳外贸soho网站建设win7 iis网站无法显示
  • 西安网站维护 策划app一般用什么开发
  • 上海营销型网站设计郴州seo推广
  • 网站开发的相关技术如何加入百度推广
  • 北京企业网站备案住建部网站2015年城市建设统计
  • 大型企业门户网站能力建设探索与实践销售类网站开发
  • 十堰 网站建设wordpress添加网易云音乐播放器
  • 网站建设shzanenwordpress-4.9.4 演示
  • 韩文网站域名备案如何自己弄一个网站
  • 营销型网站建设的价格营销型网站重要性
  • 网站结构有哪些wordpress用还得shopif好用
  • 兼职网站的建设目标怎么写淄博网站推广
  • 奇趣统计网站谁做的如何设计一款软件
  • 用什么做网站简单做新媒体国外网站
  • 长沙自动化网站建设上海比较有名的外贸公司
  • 环保网站设计规划书注册网站建设
  • 天津进口网站建设电话wordpress结构图数据库图
  • 2008iis7建立网站盐津铺子网络营销推广方法
  • 东莞网站优化是什么成都旅游网站建设地址