純量(Scalar)與向量(Vector)

在 RealityKit 3D空間運算中,會經常看到 Scalar 與 SIMD 兩個名詞,Scalar 代表「純量」,就是單純的數量,例如 Int, Float, Double 等;SIMD(Single Instruction Multiple Data) 用來表示「向量」,也就是具有大小及方向的量,例如空間中的運動速度或力。

向量其實是由多個純量所組成,可以用 Swift 同類型的多元組 (1, 5, …) 或陣列 [1.0, -2.5, …] 來表示,N維空間的向量就由N個純量所組成,每個純量稱為向量的「元素」。

例如二維空間中,向量 [1.0, -1.0] 由兩個純量組成,代表從原點[0, 0]到點座標[1.0, -1.0]的方向與距離,也就是往第4象限45°的方向,大小(長度)是√2。

Swift 目前支援以下幾種維度的 SIMD 向量:

  1. SIMD2(2維向量)元素由2個同類型純量(Int/Float/Double)組成
  2. SIMD3(3維向量)元素由3個同類型純量(Int/Float/Double)組成
  3. SIMD4(4維向量)元素由4個同類型純量(Int/Float/Double)組成
  4. SIMD8(8維向量)元素由8個同類型純量(Int/Float/Double)組成
  5. SIMD16(16維向量)元素由16個同類型純量(Int/Float/Double)組成
  6. SIMD32(32維向量)元素由32個同類型純量(Int/Float/Double)組成
  7. SIMD64(64維向量)元素由64個同類型純量(Int/Float/Double)組成
  8. simd_float2 = SIMD2<Float>(2維向量/32位元浮點數)
  9. simd_float3 = SIMD3<Float>(3維向量/32位元浮點數)
  10. simd_float4 = SIMD4<Float>(4維向量/32位元浮點數)
  11. simd_float8 = SIMD8<Float>(8維向量/32位元浮點數)