Sutherland–Hodgman算法

✍ dations ◷ 2025-10-14 20:39:14 #计算机图形学,算法

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

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

相关

  • 语言变体语言变体(英语:Language Variety),是指语言在系统和在条理上相互区分的各种形式。而方言是散文风格、语言风格更广泛的概念。从不同角度定义的方言:
  • 发芽发芽(英语:Germination,亦称为萌发)是指植物从种子中发出及真菌从孢子中发出的过程,之后它们开始生长。发芽最常见例子就是对被子植物或裸子植物的种子进行催芽而形成幼苗。然而,
  • 杜克斯县杜克斯县(英语:Dukes County)是美国马萨诸塞州东南部的一个县,由玛莎葡萄园岛和伊莉莎伯群岛组成。面积1,272平方公里。根据美国2000年人口普查,共有人口14,987人。县治埃德加敦(E
  • 奄美大岛海战奄美大岛海战,日本称为九州西南海域工作船事件(日语:九州南西海域工作船事件/きゅうしゅうなんせいかいいきこうさくせんじけん),发生于2001年12月22日,是日本海上保安厅和一艘名叫
  • 帕罗奥多帕罗奥图(英文:Palo Alto /ˌpɑːloʊˈɑːltoʊ/, /ˌpæloʊˈæltoʊ/)是美国加利福尼亚州圣克拉拉县内的一座城市,位于旧金山湾区西南部,在山景城和门洛帕克市中间,西方毗邻
  • SIL国际美国国际语言暑期学院(SIL International)是一个国际性、非牟利、宗教性的科学组织,主要在研习、开发及记录一些比较鲜为人知的语言,藉以扩展语言学知识、推动世界识字率及扶助
  • 莱索托华人莱索托华人,在莱索托如同大多数非洲国家一样,主要经营小企业,人数有5000人。1991年,一名当地妇女在南非拥有的商店被保安人员打死。该事件导致了首都马塞卢城市贫困的下层阶级和
  • 2017年6月逝世人物列表2017年6月逝世人物列表,是用于汇总2017年6月期间逝世人物的列表。
  • 杜辉璙杜辉璙(越南语:Đỗ Huy Liêu/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H","Mi
  • 豆腐渣豆腐渣可以指: