Sutherland–Hodgman算法

✍ dations ◷ 2025-11-23 20:35:11 #计算机图形学,算法

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

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

相关

  • 鸦片类药物阿片类药物(Opioid)是具有吗啡作用的化学物质,主要用途是镇痛。阿片类药物通过存在于中枢神经系统和消化系统的阿片类受体(Opioid receptor)起作用。这些阿片类受体能引发有益的
  • 索哈杰省索哈杰省(阿拉伯语:محافظة سوهاج‎),是埃及二十九省之一,位于上埃及,尼罗河在中间流过。首府索哈杰。面积1,547平方公里,人口3,746,378人(2006年统计)。
  • 威斯康辛冰期末次冰期(英语:Last glacial period)是距今时间最近的一次冰期,发生于第四纪的更新世晚期,始于约11万年前,终于1.2万年前。末次冰期内,各地冰盖亦曾出现数次的进退。冰退称为间冰段
  • 欧西坦人欧西坦人(奥克语:Occitans),是分布于欧西坦尼亚说罗曼语的拉丁民族。在法国南部和意大利西北部有十万至八十万人说奥克语。自2006年起,奥克语成为加泰罗尼亚的一种官方语言。欧西
  • 讯连科技讯连科技(英语:CyberLink,台证所:5203)是一家供应数字影音多媒体的全球性软件公司,以其旗舰产品威力导演及PowerDVD称著,总部位于中华民国(台湾)新北市。1991年由黄肇雄创办。讯连科
  • 马苏第马苏第(阿拉伯语:المسعودي‎,Al-Masʻūdī,?-956年)是一位阿拉伯历史学家、地理学家,被称为“阿拉伯的希罗多德”。全名阿布哈桑·阿里·伊本·侯赛因·伊本·阿里·马苏第
  • 群母(.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium Alternative","
  • 米高·彭博迈克尔·鲁本斯·布隆伯格,KBE(英语:Michael Rubens Bloomberg,1942年2月14日-),美国商人,第三代俄罗斯犹太移民,彭博有限合伙企业创始人,2001年至2013年间担任纽约市市长,C40城市气候
  • 王锦山王锦山(1962年7月6日-),美籍华人,化学家、科技创业家。
  • 索图布阿省索图布阿省(Sotouboua Prefecture),是多哥的30个省份之一,位于该国中部,由中部区负责管辖,首府设于索图布阿,面积4,487平方公里,2010年人口158,425,人口密度每平方公里35.3人。