让代码更简单

VisionPro的坐标空间树Coordinate Space Names

重要:本文最后更新于2020-03-24 08:33:21,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

下面是VisionPro的坐标空间树Coordinate Space Names文档中文版,此主题主要讲了VisionPro的坐标空间树的功能,及注意事项。

在VisionPro中,每个图像都有一个关联的坐标空间树。坐标空间树中的每个空间都有一个名称。你可以用这些名字

  • 查找现有空间。
  • 在创建新空间或重命名现有空间时标识空间。
  • 指示存在哪些空间以及它们之间的父/子关系。
  • 提取树中不同空间之间的坐标变换。

可以用三种方式表示任何非根空间的名称:

  • 作为一个单独的非限定(NQ)名称,
  • 作为通过树的完全限定(FQ)路径名,从根空间开始,或
  • 作为部分限定(PQ)路径名,从用户提供的空间开始。

非限定(NQ)空间名称

给非根坐标空间的单个名称是其非限定名称。非限定名必须符合以下语法规则:

  • 名称必须至少包含一个字符。
  • 名称不能包含任何非打印字符。
  • 名称不能包含任何类型(/或\)的斜杠。
  • 名称不能包含除空格字符以外的任何空格。
  • 名称不能是“.”、“…”、“…”、“^”或“$”。
  • 名称不能以空格字符开头或结尾。
    • 名称不能以标点字符开头(由ISO iswpunct()函数定义)。

非限定名作为新空间名

可以使用NQ名称指定新坐标系的名称或现有坐标系的替换名称。在这种情况下,必须指定与共享同一父空间的所有其他空间的NQ名称不同的名称。名称比较不区分大小写。如果名称不唯一,则默认情况下坐标空间树将返回错误,并且无法创建新空间。

共享同一父级的所有坐标空间必须具有唯一的NQ名称,但这不能保证NQ名称在整个坐标空间树中是唯一的。一个NQ名称可以附加到树中的多个空间。

非限定名称作为查找名称

也可以使用非限定名查找树中已存在的坐标空间。在查找期间,将对给定的NQ名称进行搜索,从根空间开始并递归地扩展到所有子空间。如果在搜索过程中只找到一次NQ名称,则找到的空间是唯一的所需空间。如果找不到该名称或多次找到该名称,则会产生错误。

完全限定(FQ)空间名称

完全限定名是从根空间开始的完整路径名。它指定树中的唯一空间。典型的FQ名称是通过将NQ名称连接到根空间的名称上,并用斜线字符“\”分隔每个NQ名称来创建的。例如,根为a的树中空间X的完全限定名可能是“a\B\C\X”。

坐标空间树始终返回以“\”字符分隔的FQ名称,但它接受向前“/”或向后“\”斜杠作为输入名称的合法分隔符。为了方便起见,名称“^”被视为根空间的别名。因此,下面的完全限定名是合法的,与前面的示例相同:“^\B\C\X”。

FQ名称有两个主要优点:

它们解决了树中潜在的歧义。例如,如果树包含两个NQ名称为“X”的空格,则名称“X”不明确,但“a\B\C\X”不明确。

它们在大型树中提供更高效的查找操作,因为不需要搜索。

根空间名称

根空间的名称是完全限定的名称。您不定义此空间,但可以更改其名称。如果重命名根空间,则新名称必须遵循NQ名称的所有规则,但可能以标点字符开头。

注意:不应更改附加到图像的任何坐标空间树的根空间名称。这些树的根空间必须为“@”,VisionPro才能正常运行。

部分限定(PQ)空间名称

部分限定名是以斜线分隔的路径名,它以指定的树中的空间开始,并指示树中的唯一空间。部分限定名需要这个单独的起始空间名来解决任何空间名的歧义。在VisionPro中,图像的选定空间名称通常用作起始空间。例如,空间名“.”通常被解释为当前图像的选定空间名。

部分限定名必须以“.”(当前用户提供的空间的别名)或“.”(其父空间的别名)开头。可以使用“\”字符作为分隔符连接其他名称。附加名称可以是NQ名称、“.”、“.”或这三个名称的组合。

部分限定名具有与FQ名称相同的优点:它们是明确的,并且查找效率高。它们还允许较短的名称字符串,并将您与树中不是起始空间的子空间的所有空间隔离。

特殊空间名称符号

您创建的每个用户空间都有一个唯一的名称;您可以在创建用户空间时指定空间的名称。除用户名外,以下特殊空间名称由VisionPro定义:

符号 描述
@ 根空间。
# 像素空间。
* 显示像素空间。只有在为图形指定空间名称时,才能使用此特殊名称。
^ 根空间的别名。
. 图像的当前选定空间名称。只能将此特殊名称与由cogImageobject实现的方法一起使用;CogCoordinateSpaceTree没有“选定空间”。
.. 当前选定空间的父空间名称。
$ 父空间为其子空间创建的子坐标空间。VisionPro图形系统使用“$”允许形状的多代层次结构。可以使用图形的GetParentFromChildTransform方法获取此空间。

检查空间名称语法

您可能需要检查空间名称的有效性,如果该名称非法或未出现在坐标空间树中,则返回错误。如果有合适的树,您可以很容易地做到这一点。使用树的VerifyName或LookUpName方法。但是,如果树不可用,则可以使用CheckSpaceNameSyntax方法检查提供的空间名称的有效性。

感觉很棒!可以赞赏支持我哟~

5 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐