用 AI 找围绳外轮廓:把所有点连起来,反而可能绕进里面

前天 3阅读

做一张钉板风格的图形草稿,要求一条拉紧的围绳把所有点包在里面,AI若按编号逐点连接,很可能画出凹口。这个任务需要的是凸包。让模型交出边界点、内部点和验算理由,比让它直接画一条“看着包住了”的线更可靠。

用 AI 找围绳外轮廓:把所有点连起来,反而可能绕进里面

AI模型生成的概念图:绷紧的轮廓经过外侧点,内部点不必逐一接触;点位不是正文坐标,也不是钉板加工模板。

完整输入只有八个点

原创坐标采用横向向右、纵向向上,单位为厘米:A(0,0)、B(4,0)、C(5,2)、D(3,4)、E(0,3)、F(2,1)、G(2,2)、H(1,2)。把点视为没有半径,绳没有粗细;目标是最小的凸形包围区域,不要求绳经过所有点。

CGAL对凸包的定义是包含给定点集的最小凸集合。凸的含义是,集合内任取两点,它们之间整段连线仍留在集合中。这个条件会排除向内部凹进去的角,而不是仅要求轮廓闭合或没有交叉。

示范答案应保留没有上边界的点

本例逆时针边界是A、B、C、D、E,再回A;F、G、H留在内部。五段长度分别为4、√5、√8、√10、3厘米,总周长约15.227厘米。AI不能因为内部点没有出现在边界清单上就说它们被遗漏,它们的任务是被围住。

人工可以先在方格纸上标出八点,拿尺连五条边,再检查三个内点。更严格的检查是按逆时针逐边前进,所有点都应位于各边左侧或边上。本文脚本逐点逐边计算有向叉积,八个点对五条边都不为负,同时核对边界转弯方向一致。

只移动一个点,旧外点也可能退回内部

现在只将G从(2,2)移到(6,3),其余不变。新轮廓为A、B、G、D、E,再回A;原来的C不再是凸包顶点。示范输出必须同时写出“加入G”和“移除C”,不能只在旧边界里插入一个新名字。

新周长为4+√13+√10+√10+3,约16.930厘米。检查B到G这条边时,它的方向为(2,3);C相对B为(1,2),叉积2×2−3×1=1,仍在左侧。结合其余边的同侧检查,C已经被新轮廓包含,不必再绕过去接触它。

可完整复制的提示词

“请求八点的二维凸包:A(0,0)、B(4,0)、C(5,2)、D(3,4)、E(0,3)、F(2,1)、G(2,2)、H(1,2),单位cm,横右纵上。点与围绳均无厚度。给逆时针顶点顺序、内部点、逐边长度和闭合周长;用各点对有向边的叉积检查同侧包含,不按输入顺序强行连接。再只将G改为(6,3),重算并明确哪些点加入或退出边界,保留精确根式与三位小数。解释凸包与必须拜访每点的路线不同,不声称生成图可直接加工。”

若真实钉子有半径,绳要绕过圆形边缘,所需长度会增加;绑结与材料拉伸也不在点模型内。存在墙或其他障碍时,绳可能无法直线连接。AI给的是几何底稿,制作前仍要按实际物件尺寸另留余量。

参考资料

CGAL:2D Convex Hulls and Extreme Points

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。