几何运算符
几何运算符提供了对几个基本几何操作的高级访问。它们可以直接应用于几何结构的对象,也可以应用于表示几何对象坐标的向量(数字列表)。如果操作符返回几何对象,也可以使用draw操作符直接绘制。
列表和坐标
直线的坐标始终是同质坐标(即参数的三个数字列表[甲、乙、丙]
直线的等式a*x+b*y+c=0
).点的坐标可以是欧几里得(两个数字的列表[x,y]
)或同质(三个数字的列表[x,y,z]
代表这一点[x/z,y/z]
).返回值将始终位于同质坐标中。在下面的文本中,我们将把类点参数表示为点›
,和线状参数为›线路›
,无需进一步说明坐标必须为上述类型。
因为这两种对象类型点›
和线路›
可以表示为三个数字的列表,需要一种方法来区分这两种情况。在内部,列表带有指示其是否具有内在几何意义的标志。可以询问操作员地理类型(Şlist›)
以获取此信息。此操作员将返回“点”
,“行”
,或“无”
.如果这样的向量具有内在的几何意义,那么画
操作符将自动将其渲染为这样的对象。
基本几何运算符
两条线的交点:满足(line1›,line2›)
描述:此运算符计算两条直线的交点。它返回同质坐标中的一个点。
连接两点:加入(点1›,点2›)
描述:此操作符计算连接两个点的直线。结果是一条齐次坐标中的直线。
计算并行:平行(点›、线›)
计算并行:平行(线›,点›)
描述:此运算符以点和线作为输入(无论以何种顺序),并计算与输入线平行并通过输入点的线。操作符返回的行再次用同质坐标表示。这个操作符指的是欧几里德几何。不支持双曲线和球面计算。此运算符也可以缩写为第(…)段
.
计算正交线:垂直(点›、线›)
计算正交线:垂直(›线›,›点›)
描述:此运算符以点和线作为输入(无论以何种顺序),并计算与输入线正交并通过输入点的线。操作符返回的行再次用同质坐标表示。这个操作符指的是欧几里德几何。不支持双曲线和球面计算。此运算符也可以缩写为每个(…)
.
组合示例:下面的代码创建了下面的图片。请注意,操作符生成了返回值的隐式类型,以便自动正确地呈现对象。
A=[1,1];B=[2,5];C=[7,2];a=连接(B,C);b=连接(C,A);c=连接(A、B);ha=垂直(A,A);hb=垂直(B,B);hc=垂直(C,C);X=满足(ha,hb);X年X月
[2.3043, 3.1739]
跳过测试:无法在测试套件中进行绘图。
抽球([a,b,c,d,ha,hb,hc,X,a,b,c]);
计算正交向量:垂直(列表›)
描述:如果perp(犯罪嫌疑人)
操作符是用一个参数调用的,它假定输入列表由两个数字组成。这样的列表[甲,乙]
被此运算符转换为列表[-b,a]
,这是围绕原点旋转90°的输入向量。
三角形的面积:区域(点1›、点2›和点3›)
描述:此操作符计算由三个顶点组成的三角形的(定向)面积点1›
,点2›
、和›第3点›
.如果点的方向是逆时针的,则面积为正,如果是顺时针的,面积为负。如果三个点共线,则面积为零。
有用的线性代数算子
以下来自线性代数的运算符在几何环境中非常有用。它们特别适用于长度为3的数字向量。对于该上下文中的其他有用运算符(例如距离
、矩阵运算和标量乘积)请参阅向量和矩阵.
三个点的行列式:检测(vec1›、vec 2›、бvec 3›)
描述:此运算符计算由三个三维向量组成的3×3矩阵的行列式vec1›
,vec2›
,vec3›
.与本节中描述的一般行列式方法不同向量和矩阵,此方法对性能进行了优化。
两点的叉积:十字架(vec1›,бvec2›)
描述:此运算符获取两个三维向量并计算其叉积。叉积是与其他两个向量正交的三维向量。
十字架([2,5,3],[1,8,11])
[31, -19, 11]
CindyScript>=3.0
[2, 5, 3] × [1, 8, 11]
[31, -19, 11]
转换和键入
对象的类型:地理类型(list›)
CindyJS中尚不可用!
描述:此运算符确定对象是否具有明确的几何意义。它返回的字符串为“点”
,“线路”
,或“无”
.
将此运算符应用于包含两个数字的列表将始终返回“点”
.将此运算符应用于三个数字的列表将返回“点”
,“行”
,或“无”
,取决于此列表的内部含义是否设置为“点”
或“行”
.来自灰姑娘建筑几何对象的值将始终指定相应的几何类型。的输出满足
运算符始终是“点”。操作员的输出参加
,平行的,平行的
、和垂直的,垂直的
始终是一条“线”。此外,可以使用运算符显式设置几何意义线
和指向
.
声明要点:点(vec›)
描述:此运算符将三个数字的向量的几何类型显式设置为“点”
.如果参数不是三个数字的列表,则运算符无效。
声明行:线路(vec›)
描述:此运算符将三个数字的向量的几何类型显式设置为“行”
.如果参数不是三个数字的列表,则运算符无效。
指向复数:复杂(点›)
描述:此运算符获取一个点并将其转换为复数。这里,欧几里德平面的通常坐标系被识别为高斯复平面。重点【x,b】
转换为复数a+i*b
.
复数到点:高斯(数字›)
描述:这个操作符与前一个操作符相反。它转换复数a+i*b
两个数字的列表[甲,乙]
.
四个点或线的交比:交叉比
描述:计算四个点的几何交比。如果四个点共线,则计算实际射影平面上的通常交比。如果这些点不共线,则计算复射影线中相应点的交比。对于共线有限点,这两个结果一致。
交比([2,-2],[1,-1,1],[0,1],[0,0,1])
0.8+i*0.1
四个数字的交比:交叉比
描述:计算四个实数或复数的交比(A/B)/(C/D)。一个非常有用的几何不变量。
交比(2-2*i,1-i,i,0)
0.8+i*0.1
可以在显式代数层次上处理几何变换。变换最好用3×3矩阵表示。实变换对应于一个点的齐次坐标与相应的变换矩阵的矩阵乘法。有几个运算符用于计算这些变换矩阵。
直线反射:线条反射(线条›)
描述:返回表示行中反射的矩阵线路›
.
例子:下面的代码占用了这一行一,创建反射变换,并映射点C类将齐次坐标乘以矩阵。结果是图中的绿点。
跳过测试:无法在测试套件中进行绘图。
m=线反射(a);绘图(m*C.homog);
点的反射:点反射(点›)
描述:返回表示点中反射的矩阵点›
.
翻译:地图(点1›,点2›)
描述:返回表示映射的转换的矩阵点1›
到点2›
.
相似性:地图(›点1›、›点3›、›点2›、›点4›)
描述:返回表示映射的相似性的矩阵点1›
到点2›
和点3›
到点4›
.
仿射变换:地图(点1›、点3›、点5›、2›、4›、6›)
描述:返回表示映射的仿射变换的矩阵点1›
到点2›
,点3›
到点4›
、和点5›
到点6›
.
投影变换:地图(点1›、点3›、点数5›、7›、2›、4›、6›、8›)
描述:返回表示映射的投影变换的矩阵点1›
到点2›
,点3›
到点4›
,点5›
到›点6›
、和点7›
到点8›
.