用于镶嵌变形的曲线演化方案( 二 )


来表示边的形状 , 在内部共享边的表示 , 以表达拼块边界的冗余度 。 渲染算法认识到 , 每块拼块都与无限网格中的一个正方形对齐 。 该拼块的方向是由正方形的八个对称性之一给出的 , 可以通过给出一个由水平和垂直平移重复的矩形网格的方向来紧凑地编码 。
与以前的工作不同 , 每个拼块边缘都由一个额外的时间参数t在[01
的范围内进行参数化 , 允许边缘在不同的时间值下被查询时进行演变 。 每一个被放置的原型副本都会取代一个无限方格中的某个单位方格 。 这个正方形边缘的中点的(x , y)坐标被传递给一个 \"参数空间\" , 一个为平面上的每一个点分配时间值的函数 。 一个典型的参数空间会在最终将被绘制的拼花变形的最小和最大x位置之间线性插值时间值 。 这些时间值被传递给参数化的边缘 , 所产生的曲线被串联起来以产生被放置的拼块的边界 。
3 基于网格的曲线
在Huff记录的拼花地板变形中 , 我们发现有几种情况 , 即通过连续增加小单位的方形凹陷 , 使直的拼块边缘演变为曲折的路径 。 这种方法在对图案的所有改变都必须通过手工计算和绘制的情况下是自然的 。 当然 , 这也是一种很适合软件实现的技术 。
让平面被无限的单位正方形网格覆盖 , 并沿着正方形的边画一条简单的连接直线路径 。 路径上具有一条或多条边的任何正方形都可以用于定义对路径的修改 , 方法是强制它沿着当前不在路径上的边绕着正方形行进 。 结果只取决于最初位于路径上的正方形的边的数量(我们禁止会产生带有循环或自相交的路径的修改) 。 图2中的例子总结了可能的局部修改 。

图2:与正方形网格边缘的路径相邻的正方形所引起的三种可能的修饰 。 每对图中的左图显示了初始曲线 , 并突出了定义修改的正方形 。 右图显示的是修改后的曲线 。

图3:基于网格的演化路径的发展演示 。 最初的直线路径在左边显示为一个正方形网格 。 网格中的方块被编号 , 以表示它们的编辑将被应用于初始曲线的顺序(具有相同编号的方块可以以任何合法的顺序应用) 。 右边的序列显示了由这种编号产生的所有路径 。 底部的一排拼块显示了对IH41型样品原型的两个边缘使用这一曲线的情况 。
现在可以通过一系列这样的修改来构建进化路径 。 沿着正方形网格中的n个连续边放置初始直的路径P0 。 然后 , 我们选择一个正方形序列{s1 , ... , sm , 约束条件是sk与通过应用由s1 , ... , sk-1定义的修改而获得的路径相邻 。 只要路径不会形成环路或自交点 , 结果就是m条新路径P1 , ... , Pm从一条直线段演化而来 。 要在时间t评估这条曲线 , 我们只需返回Pmt 。
在实践中 , 我们可以提供更大的灵活性和表现力 。 最重要的是 , 几个方块可以被组合在一起 , 以便它们的修改被 \"同时 \"应用(相对于t) 。 图3显示了一条具有这种额外属性的演化曲线 。 在图的底部 , 路径演化的六个阶段中的每一个都重复了三次 。 还要注意的是 , 在一连串的修改中 , 一个方块可以被访问不止一次;第二次访问只是将第一次的效果逆转 。
我创建了一个交互式工具 , 在这个工具中 , 一个n×n的正方形等面体原型被嵌入一个正方形网格中 。 设计者以任何顺序选择网格方块 , 并可以根据所产生的路径预览拼花地板的变形 。 该工具将设计者限制在合法的方格(那些与当前原型边界相邻的方格 , 并且不会导致非法的拼块形状) 。 系统会自动将任何局部编辑传播到拼块边界上所有与对称性和可铺设性有关的位置 。

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。