辛蒂JS公司

形状

除了基本的直线、多边形和圆绘制操作外,CindyScript还提供了将这些对象组合成更复杂的对象(称为形状)的可能性。形状不直接可见,但可以用于填充、绘制轮廓或剪裁。它们可以使用并集、交集或集差等逻辑运算进行组合。我们首先列出基本运算符,然后在更详细的示例中解释它们的用法。


形状基本体

圆形:圆圈(点›,半径›)

描述:此运算符创建给定半径›围绕给定的点›.


多边形形状:多边形(list›)

描述:此操作符创建由中给定位置列表定义的多边形列表›.


半平面形状:半平面(б线›,б点›)

描述:此操作符创建半平面形状。半平面由其支撑线定义线路›还有一点点›包含在半平面中,它决定半平面位于支撑线的哪一侧。线路›可以是同质坐标的三维矢量,也可以是对直线对象的引用。


屏幕的形状:屏幕()

描述:此操作符创建一个矩形,其大小足以覆盖所有活动的绘图曲面。


组合形状

可以使用三个逻辑运算符组合基本图形以形成新图形。

形状的并集:形状1›++形状2›

创建两个形状的并集。它的内部是任何一个点内的任何一个›形状1›或形状2›。

形状的交集:形状1›~~形状2›

创建两个形状的交点。它的内部是位于形状1›和形状2›内的任意点。

形状差异:形状1›--形状2›

创建两个形状的(不对称)差异。它的内部是位于形状1›内部的任何点,而外部是形状2›。


使用形状

形状可以用于填充、绘制轮廓和剪裁。


填充形状:填充(形状›)

描述:此运算符使用指定的颜色填充形状。

修改人:此运算符支持以下修饰符:

修饰符 参数 效果
颜色 [领域1›,领域2›,行业3›] 将填充颜色设置为RGB值
阿尔法 真正的› 将不透明度设置为值阿尔法›

绘制形状:绘制(形状›)

描述:此操作符绘制形状的轮廓。

修改人:该操作符是对常用draw操作符的进一步多态扩展,并支持相同的修饰符。


设置clippath:夹子(形状›)

描述:此操作符将剪辑路径设置为给定形状。所有后续的绘制操作都将根据此剪裁路径进行剪裁。剪辑路径被推送到外观堆栈上,因此可以通过以下语句再次删除它grestore()格雷塞().


示例

以下示例说明了形状的使用。下面的代码定义了三种不同的形状,一种是二次型,另一种是圆形。然后使用逻辑运算将它们组合成一个更复杂的形状。填充并勾勒出复杂形状。原始形状由较细的线条勾勒出来。

形状1=圆(E,4);形状2=圆(F,4);形状3=多边形([A、B、C、D]);颜色((0,0,0));形状=形状1++形状2++形状3;填充(形状、颜色->(1,0.8,0));绘制(形状、大小->3);绘制(形状1);绘制(形状2);绘制(形状3);

生成的图像显示为下面的第一张图片。其他三个图像是使用形状的其他组合创建的。

图像 图像
形状1++形状2++形状3 形状1~~形状2~~形状3
图像 图像
形状1++形状2--形状3 形状1++形状2~~形状3

下面的代码片段演示了形状作为剪切路径的用法。首先,四个圆及其并集被定义为一个形状。然后将此形状用作另一个图形的剪切路径(围绕点的同心圆E类).

r=3;形状=圆(A,r)++圆(B,r)++圆(C,r)++圆(D,r);夹子(形状);重复(60,i,牵引圈(E,i/2,颜色->(0,.6,0),尺寸->3););灰色();绘制(形状、颜色->(1,1,1)、大小->2);

图像

形状可以成为相当复杂的对象,如以下迭代示例所示。这里可能需要提醒一句:形状越复杂,消耗的计算资源就越多。使用过于复杂的形状可以大大减缓灰姑娘的速度。

a=复合物(a);b=复合物(b);z=复合物(C);形状=圆((0,0),0);重复(50,形状=形状++圆(高斯(a),|a-b|);a=a*z;b=b*z;);填充(形状、颜色->(1,0.7,0));绘制(形状、颜色->(0,0,0)、大小->2);

图像