冒号运算符

CityEngine 2022.0    | 

语法

  • float[] base : limit
  • float[] base : increment : limit
注:

冒号运算符只能用作 array initialization 函数和索引运算符(在括号 [] 注记内)的参数。

参数

  1. base – 浮点型
    序列的起始值。
  2. increment – 浮点型
    向 base 连续添加的值。 对于递升序列 base<=limit,必须为正值;对于递减序列 base>=limit,必须为负值。 默认值为 1。
  3. limit – 浮点型
    不能超出的最大值/最小值

返回

包含一系列浮点值的数组

base, base + increment, base + 2*increment, … ]

其中,最后一个元素不超过 limit

参数 baseincrement 和 limit 均以冒号分隔的注记形式给出。

注:

返回的数组大小有限。 可在程序运行时首选项中进行配置(默认值:100000)。

相关内容

示例

二元冒号运算符

const a = [2   : 4]      // (3)[2,3,4]
const b = [0.5 : 3]      // (3)[0.5,1.5,2.5]
const c = [4   : 2]      // (0)[]

 

三元冒号运算符

const a = [1 :  0.5 : 3] // (5)[1,1.5,2,2.5,3]
const b = [4 :   -1 : 2] // (3)[4,3,2]
const c = [1 : -0.5 : 2] // (0)[]
const d = [1 : -0.5 : 1] // (1)[1]
const e = [1 :    0 : 1] // (0)[]

 

浮点不精确

计算序列值 base+i*increment 时,存在浮点不精确问题。 其精确值可能与预期不符。 由于存在隐式取整,因此在打印值时不一定会注意到。

const a = [0 : 0.15 : 0.5]

Init --> print(a)                        // (4)[0,0.15,0.3,0.45]
         print(a[3] == 0.45)             // false
         print(abs(a[3] - 0.45) < 1e-10) // true