前言

在做一碰撞检测时,犹豫一直无法实现,就行想到直接对两个模型求交集,如果交集部分为空,就说明其没有相交,于是使用了下面的方法,求模型的交集。(后来由于在不相交时一直有报错误,但在后来的研究中发现及时报错并不影响其运行,但是最后还是放弃了)

方法

构建两个模型,通过设置其相对位置,使得其可以相交,并显示相交部分。

代码如下:

 {//int w = intersectionPolyDataFilter->GetNumberOfIntersectionPoints();vtkSphereSource* sphere = vtkSphereSource::New();sphere->SetCenter(0, 0, 0);sphere->SetRadius(10);sphere->SetThetaResolution(40);sphere->SetPhiResolution(40);sphere->Update();vtkCylinderSource* cylinder = vtkCylinderSource::New();//圆柱cylinder->SetCenter(2, 0, 0);cylinder->SetRadius(3);cylinder->SetHeight(40);cylinder->SetResolution(10);cylinder->Update();vtkNew<vtkTriangleFilter> filter1;filter1->SetInputData(sphere->GetOutput());filter1->Update();vtkNew<vtkTriangleFilter> filter2;filter2->SetInputData(cylinder->GetOutput());filter2->Update();vtkNew<vtkBooleanOperationPolyDataFilter> filter_merge;filter_merge->SetInputData(0, filter1->GetOutput());filter_merge->SetInputData(1, filter2->GetOutput());//filter_merge->SetOperationToDifference();//显示差集//filter_merge->SetOperationToUnion();//显示并集filter_merge->SetOperationToIntersection();//显示交集filter_merge->Update();vtkPolyDataMapper* map = vtkPolyDataMapper::New();map->SetInputConnection(filter_merge->GetOutputPort());map->ScalarVisibilityOff();vtkActor* actor = vtkActor::New();actor->SetMapper(map);vtkRenderWindow* renWin = vtkRenderWindow::New();vtkRenderer* ren = vtkRenderer::New();renWin->AddRenderer(ren);vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();iren->SetRenderWindow(renWin);ren->AddActor(actor);ren->SetBackground(0.3, 0.4, 0.5);renWin->SetSize(450, 450);vtkInteractorStyleTrackballCamera* style = vtkInteractorStyleTrackballCamera::New();iren->SetInteractorStyle(style);iren->Initialize();renWin->Render();iren->Start(); }

效果

实际效果为,圆柱和球相交的部分进行显示。

(03)两个模型的交集、并集、差集相关推荐

  1. 两个list的交集并集差集

    昨天看了一本书,讲了更优雅的进行两个集合的并集.交集.差集等.比之前的那个stream流要好用. 1.并集 最正常的使用add方法. list1.addAll(list2); 注意:要是想要得到不重复 ...

  2. js寻找两个数组的差集_js求两个数组的交集|并集|差集|去重

    let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合)  a-b = [1,3] (b-a 差集:属于b但不属于a的集合)  b-a = [4 ...

  3. ORAClE 两个表取交集,并集,差集

    这是我盗的 selct A.* from A UNION ALL/UNION/Intersect/MINUS select B.* from B; UNION ALL ---------------- ...

  4. Java求两个数组的交集、差集、并集

    目录 Java求两个数组的并集,代码如下: Java求两个数组的交集,代码如下: Java求两个数组的差集,代码如下: 交集.差集.并集测试代码如下: Java求两个数组的并集,代码如下: /*** ...

  5. 利用shell求取两个文件的交集、差集、并集等

    求文件行数 cat a.txt | wc -l 交集 sort a.txt b.txt | uniq -d 并集 sort a.txt b.txt | uniq 差集 (1) a.txt-b.txt ...

  6. jdk8两个List取交集、差集、并集(不去重)、并集(去重)

    jdk8两个List取交集.差集.并集(不去重).并集(去重) /*** 交集* @param list1* @param list2* @return*/private static List< ...

  7. 【Java】对两个Set取交集,差集,并集

    1.取交集(取两个集合中都存在的元素) HashSet<String> setA = new HashSet<>(); HashSet<String> setB = ...

  8. lambda 对象去重_采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集...

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...

  9. oracle 并集 时间_Oracle集合运算符 交集 并集 差集

    集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...

最新文章

  1. Sublime Text2.0.2注册码
  2. Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()
  3. ef AddDays报错
  4. ubuntu19 安装git_在Ubuntu 18.04上安装Git
  5. 统计单词数(洛谷-P1308)
  6. 自拍就可以得到你自己的个人贴图 Gboard打造客制化贴图
  7. MySQL中表连接方式
  8. 协程 c语言,协程-C语言实现
  9. PS使用:windows解决Adobe Photoshop 2020(PS2020)闪退
  10. 场景编辑器 Scene Building
  11. 华为Code Craft 2020 + ZTE 中兴捧月
  12. MSN与六度分隔理论
  13. 30人围成一圈的小游戏。c语言
  14. 21天减肥法反弹案例-987减肥网
  15. 如何让机器向“时尚达人”学习?阿里做了个“实用”的图像数据集
  16. 【项目数据优化一】敏感数据脱敏处理
  17. 深度学习笔记整理(五)——提高泛化能力的方法
  18. CAD图纸中,提取标注的方法是什么呢?
  19. 钙钛矿锰氧化物磁制冷材料/CsPbBr3@PS聚苯乙烯钙钛矿量子点/CsPbBr_3/C8-BTBT复合薄膜
  20. 体内因素差容易长痘痘 六方法让你远离痘痘

热门文章

  1. matlab2c使用c++实现matlab函数系列教程-raylpdf函数
  2. 8086状态标志寄存器含义
  3. PAT 1018 锤子剪刀布
  4. codeforce Gym 100418K Cards (概率,数学)
  5. ubuntu mysql主从库的搭建
  6. sum problem
  7. 判断一个字符串是否在一个数组中
  8. 使用模板实现asp代码和页面分离_asp技巧
  9. asp.net简单的投票系统代码 转载牛腩兄弟的
  10. [转载] 机器学习篇—Numpy数值计算基础(中)