=== SAVED CAST: invisibility_3_s51 ===
Normalized points: 60
Raw points: N/A

--- NORMALIZED STROKE POINTS (x, y in [0,1], top-left origin) ---
  [ 0]  (0.7903, 1.0000)
  [ 1]  (0.7841, 0.9929)
  [ 2]  (0.7841, 0.9586)
  [ 3]  (0.7843, 0.9243)
  [ 4]  (0.7856, 0.8901)
  [ 5]  (0.7869, 0.8558)
  [ 6]  (0.7882, 0.8215)
  [ 7]  (0.7895, 0.7873)
  [ 8]  (0.7889, 0.7531)
  [ 9]  (0.7857, 0.7189)
  [10]  (0.7824, 0.6848)
  [11]  (0.7779, 0.6508)
  [12]  (0.7903, 0.4494)
  [13]  (0.7878, 0.4108)
  [14]  (0.7872, 0.3722)
  [15]  (0.7872, 0.3335)
  [16]  (0.7872, 0.2949)
  [17]  (0.7870, 0.2562)
  [18]  (0.7867, 0.2175)
  [19]  (0.7863, 0.1788)
  [20]  (0.7860, 0.1402)
  [21]  (0.7858, 0.1015)
  [22]  (0.7873, 0.0629)
  [23]  (0.7888, 0.0242)
  [24]  (0.7903, 0.0000)
  [25]  (0.7903, 0.0364)
  [26]  (0.7898, 0.0728)
  [27]  (0.7894, 0.1091)
  [28]  (0.7890, 0.1455)
  [29]  (0.7890, 0.1819)
  [30]  (0.7897, 0.2183)
  [31]  (0.7904, 0.2546)
  [32]  (0.7911, 0.2910)
  [33]  (0.7918, 0.3274)
  [34]  (0.7937, 0.3637)
  [35]  (0.8058, 0.3938)
  [36]  (0.7903, 0.4557)
  [37]  (0.7362, 0.4520)
  [38]  (0.6820, 0.4498)
  [39]  (0.6278, 0.4483)
  [40]  (0.5736, 0.4468)
  [41]  (0.5193, 0.4451)
  [42]  (0.4651, 0.4434)
  [43]  (0.4109, 0.4417)
  [44]  (0.3567, 0.4400)
  [45]  (0.3025, 0.4381)
  [46]  (0.2483, 0.4351)
  [47]  (0.1942, 0.4322)
  [48]  (0.7903, 0.6024)
  [49]  (0.7607, 0.5973)
  [50]  (0.7307, 0.5953)
  [51]  (0.7007, 0.5941)
  [52]  (0.6707, 0.5930)
  [53]  (0.6407, 0.5919)
  [54]  (0.6106, 0.5907)
  [55]  (0.5806, 0.5901)
  [56]  (0.5506, 0.5898)
  [57]  (0.5205, 0.5895)
  [58]  (0.4905, 0.5891)
  [59]  (0.4606, 0.5860)

--- KEY VERTICES (corners with angle < 120 degrees) ---
  V0  (0.7841, 0.9929)  angle=41.1 deg
  V1  (0.7903, 0.0000)  angle=176.5 deg
  V2  (0.8058, 0.3938)  angle=36.0 deg
  V3  (0.7903, 0.4557)  angle=79.8 deg
  V4  (0.1942, 0.4322)  angle=167.2 deg
  V5  (0.7903, 0.6024)  angle=173.9 deg

--- SUGGESTED DOT TEMPLATE FORMAT ---
// Paste into SpellGestureTracker.java getDotTemplates():
new DotTemplate(DetectedPattern.SPELL_NAME, "description",
    new double[][] {
        // pick key dots from vertices above
    },
    new int[][] {
        // define connections between dots
    }
),
