Sutherland–Hodgman算法

✍ dations ◷ 2025-07-06 15:23:42 #计算机图形学,算法

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

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

相关

  • 快乐快乐是一种感受良好时的情绪反应,一种能表现出心理状态的情绪。而且常见的成因包括感到对健康、安全、爱情等之满足。快乐最常见的表达方式就是笑。通常我们认为达到快乐,是需
  • 酱是带黏性或糊状的调味料、佐料或副食品,狭义的酱专指指材料经过发酵所产生者。蘸酱则是食用时把食物蘸进已调味的酱。一些腌渍食品也会以酱命名,如酱菜。酱的原料有很多,如以
  • 海军陆战队学校中华民国海军陆战队学校,简称陆战队学校或陆战学校,是中华民国海军陆战队的教育训练机构,位于海军左营基地内,专责海军陆战队军官、士官之基础教育、进修教育、专业专长教育、职
  • 闭锁式循环循环系统(英语:circulatory system),也称为心血管系统(英语:cardiovascular system)或血管系统(英语:vascular system)是负责血液循环,在细胞间传送养分(如氨基酸及电解质)、氧气、二氧化
  • 抗高血脂药降血脂药(英语:Hypolipidemic agents),又称调血脂药或antihyperlipidemic agents、lipid-lowering drugs,是一类用来治疗高脂血症的药物。常用的降血脂药有两大类,分别为他汀类药
  • 大波士顿大波士顿是指马萨诸塞州紧靠波士顿的地区。都会区总人口约440万,列美国第11位。 人口普查办公室按照美国行政管理和预算局的基于核心的统计区域(英语:Core Based Statistical
  • 十恶 (佛教)十恶,在佛教中指十种严重程度之恶行。包括:一杀生。二不与取。三欲邪行。四虚诳语。五离间语。六麁恶语。七杂秽语。八贪欲。九瞋恚。十邪见。行此十种恶行所造之业称十恶业,会
  • 张仃张仃(1917年5月19日-2010年2月21日),号它山,男,辽宁黑山人,中国现代艺术家、教育家、清华大学教授、原中央工艺美术学院院长,中国人民政治协商会议会徽的设计者,中华人民共和国国徽设
  • 玄鱼玄鱼是中国传说中的鱼。玄鱼是从鲧所变化而来的。此说出见于晋代。山海经中记载:......而东流注于宪翼之水。其中多玄鱼,其状如龟而鸟首虺尾,其名曰旋龟,其音如判木,佩之不聋,可以
  • 不成对电子不成对电子指在分子轨道中只以单颗存在的电子,而不形成电子对。原子的分子轨道能容纳一对不同自旋的电子,而成对的电子较为稳定,电子常以化学键或孤电子对的方式存在,不成对电子