Sutherland–Hodgman算法

✍ dations ◷ 2025-05-16 06:31:41 #计算机图形学,算法

Sutherland–Hodgman算法是裁剪多边形的算法。它通过轮流延长每个凸多边形的边,并且只选择在可见一侧的顶点来完成任务。

该算法从目标多边形中所有顶点的输入列表开始。接下来,剪裁多边形的一条边在两个方向上无限延伸,同时遍历目标多边形的边。如果输入列表中的顶点位于扩展的剪裁多边形线的可见侧,则它们会插入到输出列表中,并且目标多边形与剪裁多边形的延长后的边相交的顶点会添加到输出列表。

使用一个阶段的输出列表作为下一个阶段的输入列表,对每个剪辑多边形侧重复进行此过程。剪裁多边形的所有边都经过处理后,最终生成的顶点列表将定义一个完全可见的新单个多边形。请注意,如果目标多边形在剪裁多边形外部的顶点处凹入 ,则新多边形可能具有重叠的边缘——这对于渲染是可接受的,但不适用于其他应用程序,例如计算阴影。

给定一个剪裁多边形的一组边,和一个目标多边形的顶点列表,下面的过程将目标多边形根据剪裁多边形进行剪裁。

   List outputList = subjectPolygon;        for (Edge clipEdge in clipPolygon) do      List inputList = outputList;      outputList.clear();          for(int i = 0 ; i < inputList.count ; i += 1) do         Point current_point = inputList;         Point prev_point = inputList;             Point Intersecting_point = ComputeIntersection(prev_point, current_point, clipEdge)             if (current_point inside clipEdge) then            if (prev_point not inside clipEdge) then               outputList.add(Intersecting_point);            end if            outputList.add(current_point);                  else if (prev_point inside clipEdge) then            outputList.add(Intersecting_point);         end if          done   done

当算法终止时,将在找到裁剪后多边形的顶点。请注意,如果它位于该边缘作为多边形的剩余部分的相同侧上的点被定义为边缘 。如果剪裁多边形的顶点始终沿逆时针方向列出,那么这等效于测试该点是否位于直线的左侧(left表示 ,right表示 ),这可以通过简单地使用叉积 实现。

是一个函数,为清楚起见在此省略了该函数,它返回线段和无限边的交点。请注意,仅在已知存在这种相交的情况下才调用它,因此可以简单地将两条线都视为无限长。

相关

  • 细菌接合接合(英文:Conjugation,又译结合),又称为接合作用、细菌接合,是发生于原生动物间的现象,指的是两个细菌之间发生的一种遗传物质交换现象,属于细菌有性生殖的一个重要阶段。在接合现
  • 艾司西酞普兰艾司西酞普兰(英语:Escitalopram),或称依地普仑 ,商品名为立普能(Lexapro)等,是一种选择性5-羟色胺再摄取抑制剂(SSRI)类抗抑郁药。 美国食品药品监督管理局(FDA)批准其用来治疗成人和12
  • 贫金属贫金属(poor metal),也称“其他金属”(other metal),用于指代在元素周期表的p区块的金属。相比过渡金属,贫金属的电负度较高,熔点和沸点较低,并且也更软。但由于它们的熔沸点还是比同
  • 乳状体乳状体(Mammillary body)是下丘脑中被灰色物质覆盖着的一对白色乳突,跟其他大脑结构组成边缘系统。 它们由两组核组成,即内侧乳核和外侧乳核。神经解剖学通常将乳状体归入下丘脑
  • 酒br /神br /代酒海纪期是月球地质年代中位于前酒海纪和早雨海世之间的一段时期。它起始于酒海盆地形成之初(42-38亿年前),结束于雨海盆地即将到来之前(38.7-37.5亿年前,最新数据为39.38±0.004
  • CD1322B5I、​2ERJ、​3BPL、​3QAZ、​3QB7、​4GS7356116186ENSG00000147168ENSMUSG00000031304P31785P34902NM_000206NM_013563、NM_001308535、XM_017318396NP_000197NP_0012
  • 约瑟夫·格鲁约瑟夫·克拉克·格鲁(英语:Joseph Clark Grew;1880年5月27日-1965年5月25日),美国外交官,日本问题专家,曾先后出任过驻外大使和副国务卿。1880年,出生于马萨诸塞州波士顿。1902年,毕
  • 钢琴块2《钢琴块2》又称《别踩白块儿2》,是猎豹移动自主研发的一款将音乐和街机玩法完美结合的手机游戏。有多种来自世界各地的音乐。《钢琴块2》从实现玩家音乐梦想的角度出发,以大
  • 自动跳脱自动跳脱是指像安全仪表系统、可编程逻辑控制器、分散控制系统(英语:Distributed Control System)之类的系统,让工业程序切换到一安全状态的行为。自动跳脱是因为参数数值落入事
  • Q弟侦探因幡《Q弟侦探因幡》(日语:キューティクル探偵因幡)是日本漫画家MOCHI(日语:もち (漫画家))的漫画作品,于日本《月刊GFantasy》(SQUARE ENIX)2007年9月号至2017年2月号期间进行连载。单行