Sutherland–Hodgman算法

✍ dations ◷ 2025-12-05 04:47:23 #计算机图形学,算法

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表示 ),这可以通过简单地使用叉积 实现。

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

相关

  • 髓核椎间盘是连接相邻两个椎体的纤维软骨盘(第1及第2颈椎之间,还有尾椎之间没有椎间盘)使脊椎可以在相当的角度之间活动,有如避震器的功能。成人共有23个椎间盘。椎间盘对脊柱、大脑
  • 巴巴罗萨行动前线军力(初始)前线军力(初始)总军事损失:80万以上(德国陆军医疗报告)总军事损失:400万以上(苏联档案)波罗的海 – 黑海 – 北极 – (跳马 – PQ-17船团 – 仙境)1941年巴巴罗萨 – (
  • 2,4-二乙酰基间苯三酚2,4-二乙酰基间苯三酚(2,4-Diacetylphloroglucinol,2,4-DAPG)也称2,4-二乙酰基藤黄酚,是一种酚,为荧光假单胞菌一些种的次级代谢产物。研究发现,这些种代谢生成的这种化合物对植物
  • 李克特量表李克特量表(英语:Likert scale;英文中主要读作 lie-kurt /laɪkɜrt/,偶尔读作 lick-urt /lɪkɜrt/,虽然后者才取自于该人名的原本读法)是一种心理反应量表,常在问卷中使用,而且是
  • 科曼奇县科曼奇县(Comanche County, Oklahoma)是位于美国俄克拉何马州西南部的一个县。面积2,807平方公里。根据2000年美国人口普查,人口114,996人。县治劳顿。本县成立于1901年8月6日
  • 乔·吉拉迪作为球员作为教练作为总教练约瑟夫·艾略特·吉拉迪(Joseph Elliot Girardi,1964年10月14日-)出生于美国伊利诺伊州皮奥里亚,是曾担任美国职棒大联盟迈阿密马林鱼和纽约洋基队总
  • 台湾清治时期行政区划清朝康熙年间将台湾纳入版图后设立了台厦道,与厦门共署,并同时隶属于当时的福建省。(道为清朝非正式行政区划之一,属于军区划分,为省的派出机关,其地位在省与府之间,清朝后期权力逐
  • 约翰内斯·伊莱亚斯·特斯曼约翰内斯·伊莱亚斯·特斯曼(Johannes Elias Teijsmann,1808年6月1日-1882年6月22日)为植物学家和植物采集者。1830年,约翰内斯·伊莱亚斯·特斯曼来到爪哇担任约翰内斯·范·登
  • 裘建功裘建功(?-?),中国清朝官员,于1761年上任台湾府经历,隶属于台湾道台湾府,为台湾清治时期的地方官员,官职品等则为正七品以下,该官职主要从事台湾府府内典簿奏章的收发与校注,也分掌章奏文
  • 革命的共产主义者同盟全国委员会革命的共产主义者同盟全国委员会是日本的一个新左翼组织,通称中核派。中核派产生于1959年的“革共同第二次分裂”,当时被称作探求派。1963年,发生“革共同第三次分裂”,从探求派