与几何体的交互
CindyScript可以以不同的方式与使用Cinderella创建的几何图形交互。我们已经看到它可以读取数字数据和几何元素的外观。然而,它也可以更改构造的自由图元的位置。CindyScript甚至可以通过创建和删除新的几何元素来查询和更改构造顺序。
移动图元
CindyScript中的计算可用于控制灰姑娘构造中自由元素的位置。一种方法是显式设置自由元素的位置信息。例如,如果A类
是一个自由点,线A.xy=[1,1]
将此点设置为坐标[1,1]
。移动元素的另一种方法是使用移动到
操作员。
移动自由图元:移动到(<geo>,<pos>)
描述:在该操作者中,<地理>
是自由几何对象,并且<位置>
(通常是矢量)描述了该对象应该移动到的位置。调用此操作符可以模拟此几何对象的移动。
如果<地理>
是一个自由点,那么<vec>
可以是列表[x,y]
两个数字或一个列表[x,y,z]
三个数字。第一种情况被解释为欧几里德坐标,而第二种情况被理解为齐次坐标,并将点设置为[x/z,y/z]
.
如果<地理>
是自由线,那么<vec>
必须是三个数字的列表[甲、乙、丙]
,并将直线设置为方程式所描述的直线a*x+b*y+c=0
.
示例:以下代码行总结了移动几何元素的可能方法(我们还包括通过访问元素的数据字段来移动元素的可能性):
//A是自由点移动到(A,[1,4])//将A移动到欧氏坐标[1,4]A.xy=[1,4]//将A移动到欧氏坐标[1,4]A.x=5//将A的x坐标设置为5,使y坐标不变A.y=3//将A的y坐标设置为3,使x坐标保持不变移动到(A,[2,3,2])//将A移动到齐次坐标[2,3,2]A.homog=[2,3,2]//将A移动到齐次坐标[2,3,2]//a是空线移动到(a,[2,3,4])//将a移动到齐次坐标[2,3,4]a.homog=[2,3,4]//将a移动到齐次坐标[2,3,4]//b是穿过点的线b.斜率=1//将直线的坡度设置为1//C是具有自由半径的圆C半径=1//将圆的半径设置为1
对象的控制柄
搬家者:移动器()
描述:此运算符为当前由鼠标移动的元素提供句柄。
靠近鼠标的元素:鼠标中的元素()
描述:此运算符提供一个列表,其中包含靠近当前鼠标位置的所有元素的句柄。
例子:下面的脚本有点卑鄙。将其放入鼠标移动槽将使靠近鼠标的元素完全消失。如果鼠标再次移开,它们会重新出现。
应用(等位基因(),#.alpha=1);apply(elementsatmouse(),#.alpha=0);repaint();
对象发生率:发病率(<geo>)
描述:此运算符返回一个列表,其中列出了与几何元素相关的所有元素<地理>
.
按名称获取元素:元素(<string>)
描述:此运算符返回由中给定名称标识的几何对象<字符串>
.
例子:这个要素
在元素名不是有效的变量标识符或已被用户定义的或内置的名称使用的情况下,运算符是必需的。例如,如果您尝试访问具有名称的行的颜色我
,你不能写i.颜色=[1,1,1]
作为我
为复杂单元预留。相反,您可以使用:
创建和删除图元
创建自由点:创建点(<string>,<pos>)
描述:此操作符创建带有标签的新点<字符串>
.该点将被包围<位置>
。如果已存在具有此名称的元素,则不会创建新元素。但是,如果已经存在具有此名称的自由点,则会将此点移动到指定位置。
创建几何元素:创建(<list1>、<string>、<list2>)
描述:使用此操作符,可以生成在几何结构中起作用的任意几何元素。由于算法可能会产生多个输出,因此出现了一些微妙之处。此功能仅供专家使用。
第一个列表包含一个列表<列表1>
算法生成的输出对象的元素名称。<字符串>
是几何算法的内部名称。第二个列表<列表2>
是定义所需参数的列表。下表显示了一些可能的创建语句。
创建([“A”],“FreePoint”,[[1,1,1]]);创建([“B”],“FreePoint”,[[4,3,1]]);创建([“a”],“Join”,[a,B]);创建([“X”],“CircleMP”,[A,B]);创建([“Y”],“CircleMP”,[B,A]);创建([“P”,“Q”],“IntersectionCircleCircle”,[X,Y]);创建([“b”],“Join”,[P,Q]);创建([“M”],“会面”,[a,b]);
这个语句序列创建了如下所示的全功能结构。注意,在第六条语句中,当两个圆相交时,必须指定两个输出元素的列表。
通过手动构造元素并使用算法
和输入
下面介绍的功能。
删除几何元素:移除元素(<geo>)
描述:从构造中删除几何图元及其所有从属图元。
元素的输入元素:输入(<geo>)
描述:此运算符返回定义对象所需的所有元素的列表<地理>
这些可能是其他几何、元素、数字或向量。
元素的算法:算法(<geo>)
描述:此运算符返回一个类似于对象定义算法的字符串<地理>
.
例子:下面的代码生成构造序列中包含的所有信息。
els=等位基因();数据=应用(els,([[#.name],算法(#),输入(#)]);
应用于下图中垂直平分线的构造,它会生成以下输出:
[[[“A”],“FreePoint”,[[4,4,-4]]],[[“B”],“FreePoint”,[[4,-3,1]]],[[“a”],“加入”,[a,B]],[[“C”],“Mid”,[A,B]],[[“b”],“正交”,[a,C]]]
访问图元属性
通过以下操作人员可以方便地访问元素属性,如颜色、大小等.颜色
,.尺寸
然而,元素具有更多的属性。所有这些都可以通过以下操作符进行常规访问。
列出所有可检查属性:检查(<geo>)
描述:返回几何元素的所有私有属性的名称列表。
例子:操作员检查(A)
应用于自由点A类返回以下属性名列表。
[名称,定义,颜色,颜色。红色,颜色。蓝色,颜色。绿色,阿尔法,可见性,drawtrace、tracelength、traceskip、tracedim、render、isvisible、,text.fontfamily,平面,固定,关联,标签,文本大小,文本粗体,文本斜体,ptsize、点边框、打印名、点图像、,点图像媒体,点图像旋转,自由点位置]
访问可检查属性:检查(<geo>,<string>)
描述:访问任意可检查的属性。
例子:可以访问点的颜色A类通过检查(A,“颜色”)
设置可检查属性:检查(<geo>、<string>、<data>)
描述:设置可检查属性的值。
例子:可以设置点的颜色A类由白色变为白色检查(A,“颜色”,(1,1,1))
强制重新绘制操作:重新打印()
描述:此操作符会立即重新绘制绘图表面。每当脚本更新了构造并希望显示更改时,都要使用此运算符。不允许在画
或在移动
插槽。
强制延迟的重新绘制操作:重画(<真实>)
描述:作为重新喷漆
但延迟时间与he参数给定的毫秒数相同
轨迹上的点:位置数据(<位置>)
描述:此运算符返回中的点列表xy公司-全部位于由名称给定的轨迹上的坐标<轨迹>
几何元素。