Sutherland–Hodgman算法

✍ dations ◷ 2025-11-23 06:27:25 #计算机图形学,算法

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

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

相关

  • 流体静力学流体静力学(Hydrostatics)是连续介质力学的分支学科流体力学的子学科。流体静力学研究流体(诸如气体和液体)静止时的现象以及相关力学行为的科学。这样的现象和行为可以用数学表
  • 库尔特·哥德尔库尔特·弗雷德里希·哥德尔(德语:Kurt Friedrich Gödel,1906年4月28日-1978年1月14日),出生于奥匈帝国的数学家、逻辑学家和哲学家,维也纳学派(维也纳小组)的成员。哥德尔是二十世
  • 印度鼠蚤印度鼠蚤(学名:Xenopsylla cheopis),又叫印鼠客蚤,是客蚤属的一种跳蚤,长约0.1英寸(2.5毫米),寄生在啮齿动物(特别是鼠属生物)身上,喜好20~25 °C(68~77 °F)之间的干燥环境,寿命约一年。它是
  • 伦敦西区西区(英语:West End of London)是英国英格兰伦敦地名,由于此处商业区与西区剧院众多,所以许多游客经常聚集至此。西区一名是19世纪英国人用来描述查令十字以西的地区所产生的。西
  • 传播载体在流行病学中,载体又称为病媒,是指疾病携带者和传播者,但其本身不受影响。如疟蚊是疟疾的载体,它在吸血的过程中可以将导致疟疾的疟原虫传入人体内,但疟原虫对于疟蚊本身却不带来
  • 新营太子宫坐标:23°17′42″N 120°16′26″E / 23.295°N 120.27386°E / 23.295; 120.27386新营太子宫位在台湾台南市新营区太子宫太北里45-2号,为一主祀金吒太子、木吒太子及哪吒太
  • 希腊地区希腊地区 (希腊语:γεωγραφικά διαμερίσματα)是希腊传统的分区,在1987年以前也是正式的分区。下分54省。
  • 乐雅乐家庭餐厅乐雅乐家庭餐厅(日语:ロイヤルホスト,Royal Host)是日本Royal Holding Co. Ltd.(日语:ロイヤルホールディングス)集团旗下的一家连锁餐厅品牌,最早可以追溯至1951年由江头匡一(日语:江
  • 琼棕琼棕(学名:)为棕榈科琼棕属下的一个种,目前保护状态为濒危。
  • 白井智之白井智之(日语:白井 智之/しらい ともゆき ,1990年-),是一位日本推理小说作家,生于千叶县印西市,毕业于东北大学法学院,在校期间加入了SF・推理小说研究会。2014年10月,白井智之在有栖