minimumDistance 函数(上下文查询)

语法

  • float minimumDistance(target, label)

参数

  1. target - selector
    • intra - 针对同一形状树中的标注形状(即来自同一初始形状)进行检查。
    • inter - 针对其他形状树中的标注形状(即由邻域中的其他初始形状生成)进行检查。
    • all - 检查 intrainter
  2. label - string
    仅对与请求的 label 匹配的形状执行上下文查询。 不得为空。 如果 label 为空,将返回 infinity

返回

当前范围距与给定 label 匹配的形状所有范围的最小距离。 如果未找到与指定 label 匹配的形状,将返回 infinity

描述

minimumDistance 函数是一个上下文查询,用于返回当前范围与其他形状范围的距离。

注:

了解有关条件和内部上下文中上下文查询的重要特性的详细信息。

相关内容

示例

分割规则

在此示例中,将地块规则应用于单个形状(内部上下文)。 形状沿 x 和 z 方向分割成小地块。 在初始形状的中心,将创建标注为 "label" 的形状。 格网中的每个地块将相对于与标注中心形状的最小距离进行拉伸。

Lot --> split(x) 
    { ~0.1 : Lot(split.index) }*
	
Lot(x) --> split(z) 
    { ~0.1 : Lot(x, split.index) }*
	
Lot(x, z) --> [ case (x == 12) && (z == 12) :
                       label("label")
                else : NIL ]
    Extrude(minimumDistance(intra, "label"))
	  
Extrude(dist) --> case dist < 1 : 
                         extrude(1-dist) X.
                  else : NIL
带分割的地块规则

散点规则

在此示例中,将地块规则应用于单个形状(内部上下文)。 分散圆柱的标注为 "label" 并在 1% 的情况下着红色。 在其他所有情况中,如果与红色圆柱的距离大于 1,将放置圆柱

Lot --> scatter(surface, 500, uniform) { Scattered }

Scattered --> 1% : Label
              else : Check

Label --> primitiveCylinder(16, 0.1, 1) 
          color(1,0,0) 
          label("label")

Check --> case minimumDistance(intra,"label")< 1 :
                 NIL 
          else : primitiveCylinder(16, 0.05, 0.5)
带散点的地块规则