辛蒂JS公司

几何运算符的实现

最一般形式的几何运算符需要一些参数以及一些几何对象作为输入以构造一个或多个输出对象。

上述公式中的参数包括连续参数,就像自由点的位置或圆上点的角度,以及离散参数,例如从有限集合中选择一个元素。在下文中,术语“参数”通常仅指连续参数。

几何元素是几何操作符的实例。它将运算符绑定到一组参数和特定的输入元素。几何元素埃尔可以包含多条信息:

几何运算符具有对这些值进行操作的函数。以下部分描述了函数和其他属性每个几何操作符都可以定义。

在下面的文本中,有一些术语通常具有重叠含义,但在这种情况下具有非常具体的含义,所以这些术语需要定义。

kind=字符串›

描述此操作结果的对象类型的短字符串。可能的值包括:

点、线和线段类对象将其结果存储在埃尔·霍姆格.段还包含el.startpos公司,el.endpos公司el.farpoint点,但这可能会改变。圆锥曲线描述为el.矩阵,以及转换。对象集表示为el.结果.

签名=[字符串›]

虽然这还没有实现,但应该有一个未来的版本其中,此属性用于描述数字和类型允许的输入元件。

isMovable=布尔›

默认为的布尔属性.如果设置为真的,则所讨论的元素至少是半自由的,因此,它由至少一个连续参数来描述。这类元素可以通过用户交互或脚本进行移动。

stateSize=整数›

默认为零的数值属性。这是保留的浮点数在作为此运算符实例的每个元素的状态数组中。因此,允许的状态变量范围为埃尔州Idxel.stateIdx+操作状态大小独占。由于状态有时被解释为复数数组,此状态大小通常应为偶数,等于描述状态的复杂变量数量的两倍。

初始化(el)

如果存在此函数,则每个元素都只调用一次,当元素首次包含在几何配置中时。它可以计算元素的初始参数来自描述元素的对象的任意属性。在执行此函数时,前面的所有元素都将被初始化并更新了它们的位置。

这个初始化函数可以写入输出状态。更新位置函数首次运行。全球旗帜跟踪初始到时候会是真的初始化被调用。如果它确实写入状态数组,那么它可能希望将该标志设置为使得更新位置已经使用跟踪来匹配结果,而不是简单地以任意顺序返回结果。

获取输入参数(el,pos,type)

提供所需的新位置(通过鼠标输入或某些脚本中的某些赋值)此函数计算相应的参数向量以表示要么是那个位置,要么是(在某种意义上)最近的状态在半自由单元的约束下。返回的参数可以用作某些插值路径的终点。计算可以考虑输入元素的当前位置。

这个类型字段可以用来描述我们正在处理的输入类型。type===“鼠标”表示用户交互,而type===“homog”描述对“homog”元素的字段。可以根据需要引入其他类型,但应努力保持不同病例数低。例如,应该没有“xy”类型,因为设置笛卡尔坐标可以通过设置齐次坐标来建模。

当输入为“鼠标”,则该位置表示当前鼠标位置,表示为同质坐标,并且已经包括到原始点位置的偏移这是从鼠标向下时记住的。

从状态获取参数(el)

从当前输入状态读取状态输入,此函数返回与该状态相对应的参数。返回的参数可以用作某些插值路径的起点。返回的结果不应依赖于任何输入元素的当前位置。

将参数输入到状态(el,param)

将给定的参数值写入状态stateOut(状态输出).该函数沿插值路径调用,调整正在移动的元素的位置。

参数路径(el、tr、tc、src、dst)

沿插值路径计算参数。如果没有,将使用默认实现,它执行一个半圆形的复杂迂回。信托收据是实际参数,范围为-1…1。总胆固醇是在地震圆上生成的复杂参数。要么信托收据总胆固醇可用于计算备用路径。型钢混凝土数据传输系统是路径端点处的参数。返回的值应该是这些值之间的线性插值。

更新位置(el,isMover)

每个几何运算符都必须实现此功能。它将重新计算结果元素的位置基于参数元素和当前参数。

对于具有状态的元素,更新位置应该写入所有状态变量,通常在考虑到之前的状态之后。即使新状态应该与旧状态相同,这应该通过复制值来明确。

这个是移动器参数将是真的如果当前元素是一个正在积极移动的人,以及如果只是更新以响应其参数之一更改位置。