Sutherland–Hodgman算法

✍ dations ◷ 2025-12-02 02:59:17 #计算机图形学,算法

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

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

相关

  • MoSsub3/sub三硫化钼是一种无机化合物,化学式为MoS3。将七钼酸铵的稀硫酸(0.2 mol/L)溶液和硫化钠的水溶液在搅拌下快速混合,可以得到非晶态的三硫化钼。将三氧化钼溶于溶解在氢氧化钠中,得
  • 莫罗尼莫罗尼(法语:Moroni,阿拉伯语:موروني‎),科摩罗最大城市,自1962年起成为科摩罗首都,该城位于大科摩罗岛西岸。地理位置为南纬11°42'13",东经43°15'13"。截止2003年,该城市约有
  • 生活型态社会学中,生活型态(或生活风格、生活方式)是一个人(或团体)生活的方式。这包括了社会关系模式、消费模式、娱乐模式和穿着模式。生活型态通常也反映了一个人的态度、价值观或世界
  • 有机镓化学有机镓化学是研究含碳-镓键化合物的化学分支。由于镓在自然界含量稀少、分布分散,故没有同族的硼和铝研究的广泛而深入。在有机镓化合物中,镓主要以+3氧化态的形式出现,低价态
  • 2019冠状病毒病日本疫情时间轴2019冠状病毒病日本疫情时间轴(日语:日本における2019年コロナウイルス感染症の流行のタイムライン/にっぽんにおける2019ねんコロナウイルスかんせんしょうのりゅうこうのタイ
  • 卡伦·鲁索卡伦·鲁索,(英语:Cullen Russo,1994年2月1日-),出生于美国,现役美国职业篮球运动员,曾效力于ABL联盟的宝岛梦想家,场上位置为前锋。
  • 崔昂崔昂(508年-565年8月11日),字怀远,博陵郡安平县(今河北省衡水市安平县)人,出自博陵崔氏博陵第二房,北魏征虏将军、赵郡太守崔孝�之子,北魏、东魏、北齐官员。崔昂的祖父崔挺是北魏幽州
  • 厄休拉村山富市厄休拉村山富市(1972年-)是生活在西班牙的墨西哥女演员。她主演电视剧和电影。
  • 光学晶体管光学晶体管,又称为光学开关或光阀门,是切换或放大光学信号的装置。在光学晶体管输入端出现的光会改变晶体管输出端的光的强度,而且输出功率会由附加光源提供。由于输入信号的强
  • 罪犯英雄化罪犯英雄化(英语:Heroes of criminals、Criminals as heroes),把狗熊错当英雄,常导致社会价值观混淆不清,追随者模仿犯罪的行为一再发生。因为在他们自以为是却非正义的行为中,无视