三角形被竖直边界裁掉一部分后剩余面积怎么算:规则练习第09例

  • 2026-11-09
  • 1

场景裁剪会在边界与原来的边相交处产生新顶点,剩余部分可能从三角形变成四边形。只删除越界顶点会丢掉必要的交点。

原三角形底边从零至B,高度H的顶点位于横坐标A,且零小于A小于B。仅保留横坐标不小于c的部分。逐边检查内外关系,跨越裁剪线时按比例插入交点,并保持原顶点顺序。

本例输入与约定

每组输入依次为底边B、顶点横坐标A、高H、裁剪线c,保留线右侧。

完整计算记录

输入 | 剩余顶点顺序 | 剩余面积 [12, 1, 10, -2] | [['0', '0'], ['12', '0'], ['1', '10']] | 60 [11, 5, 10, 4] | [['4', '8'], ['4', '0'], ['11', '0'], ['5', '10']] | 39 [13, 10, 11, 12] | [['12', '0'], ['13', '0'], ['12', '11/3']] | 11/6 [13, 11, 6, 3] | [['3', '18/11'], ['3', '0'], ['13', '0'], ['11', '6']] | 402/11 [10, 8, 10, 2] | [['2', '5/2'], ['2', '0'], ['10', '0'], ['8', '10']] | 95/2 [12, 1, 6, 6] | [['6', '0'], ['12', '0'], ['6', '36/11']] | 108/11 [6, 5, 10, 6] | [['6', '0'], ['6', '0'], ['6', '0']] | 0 [8, 7, 12, 0] | [['0', '0'], ['8', '0'], ['7', '12']] | 48

表中编号仅用于识别本例的元素。读取一个结果时,应先核对它对应的输入、处理顺序和边界约定;布尔值表示条件是否成立,空集合表示没有符合要求的对象,不应把这些字段混成同一种数值。

复核方法与适用范围

用裁剪后多边形的顶点计算面积,同时检查所有保留点横坐标都在允许一侧。边界完全在原图形左边时面积不变,完全在右边时面积为零;切到顶点也要能正确处理。

这里计算二维面积,边界上的线段面积为零,但它仍可能作为几何对象存在。真正渲染还要处理属性插值和像素覆盖;面积结果不代表直接能数出画面中的完整像素数量。

练习时可以先独立计算最前面的一步,再检查最后的整体不变量。若结论不同,应保留各步记录,定位第一处差异;只调整最终数字会掩盖规则理解上的问题。改变输入后也要重新演算,而不是照抄这一例的输出。