Sutherland–Hodgman算法

✍ dations ◷ 2024-12-23 10:12:18 #计算机图形学,算法

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

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

相关

  • Merriam-Webster梅里亚姆-韦伯斯特公司(亦译“梅里厄姆-韦伯斯特”;英文:Merriam-Webster)是美国权威的词典出版机构,它出版的书籍——尤其是词典,在中文里往往被称作“韦氏词典”。梅里亚姆-韦伯
  • 达美航空达美航空(英语:Delta Air Lines, Inc.,NYSE:DAL)是一家总部位于美国乔治亚州亚特兰大的航空公司,目前是世界上国内客运总里程与客运机队规模第二大的航空公司。达美航空为天合联盟
  • 爪哇爪哇岛(印尼语:Jawa;爪哇字母:ꦗꦮ;巽他语:ᮏᮝ;英语:Java)又称为渣华,位于印度尼西亚,南临印度洋,北面爪哇海。爪哇岛是印尼的一个大岛,全岛面积138,800平方公里,面积与英格兰,美国北卡罗
  • 模因体质人类学 文化人类学 语言人类学 分子人类学 社会人类学 考古学应用人类学 民族志 参与观察 文化相对论文化 • 社会 史前史 • 人类演化 亲属 婚姻 • 家庭 物质文化 种
  • 应用程序接口与因特网相连的端系统提供了一个应用程序接口(英语:Application Programming Interface,缩写:API;又称为应用程序编程接口)是软件系统不同组成部分衔接的约定。 API规定了运行在一
  • 水朝美树水朝美树(日语:みずあさ みき,1980年6月11日-),日本的AV女优。为一名变性人,已去除掉部分男性生殖器,曾与月野姬共同演出色情片。出身于日本京都府。
  • 脊鳞琴脂鲤脊鳞琴脂鲤为辐鳍鱼纲脂鲤目琴脂鲤亚目琴脂鲤科的其中一种,为热带淡水鱼,分布于非洲尼日利亚尼日河流域,本鱼吻长度超过眼直径,胸鳍短,腹面长度超过胸鳍,鳞片强烈地有小齿状突起,体
  • 阿苏坦阿苏坦(西班牙语:Azután),是西班牙卡斯蒂利亚-拉曼恰托莱多省的一个市镇。总面积22平方公里,总人口335人(2001年),人口密度15人/平方公里。
  • 1,2-二溴苯1,2-二溴苯(英语:1,2-Dibromobenzene,也称为邻二溴苯)是分子式为C6H4Br2的有机化合物,是三种二溴苯的同分异构体之一,另外两种为1,3-二溴苯(间二溴苯)和1,4-二溴苯(对二溴苯)。1,2-二
  • ayumi hamasaki COUNTDOWN LIVE 2012-2013 A ~WAKE UP~《ayumi hamasaki COUNTDOWN LIVE 2012-2013 A ~WAKE UP~》(滨崎步 2012-2013 跨年演唱会A ~WAKE UP~)是日本歌手滨崎步于2012年12月29日、30日和31日在国立代代木竞技场第一体育