=== SAVED CAST: ultimateskybound_2_s81 ===
Normalized points: 64
Raw points: N/A

--- NORMALIZED STROKE POINTS (x, y in [0,1], top-left origin) ---
  [ 0]  (0.0744, 0.6610)
  [ 1]  (0.0805, 0.6120)
  [ 2]  (0.0977, 0.5667)
  [ 3]  (0.1385, 0.5576)
  [ 4]  (0.1771, 0.5589)
  [ 5]  (0.1653, 0.5108)
  [ 6]  (0.1560, 0.4621)
  [ 7]  (0.1362, 0.4288)
  [ 8]  (0.0744, 0.4510)
  [ 9]  (0.0773, 0.4792)
  [10]  (0.0803, 0.5073)
  [11]  (0.0837, 0.5354)
  [12]  (0.0871, 0.5636)
  [13]  (0.0904, 0.5917)
  [14]  (0.0945, 0.6197)
  [15]  (0.1030, 0.6347)
  [16]  (0.0744, 0.5327)
  [17]  (0.0869, 0.5469)
  [18]  (0.0883, 0.5605)
  [19]  (0.0739, 0.5695)
  [20]  (0.0569, 0.5614)
  [21]  (0.0637, 0.5465)
  [22]  (0.0764, 0.5342)
  [23]  (0.0629, 0.5372)
  [24]  (0.0744, 0.5479)
  [25]  (0.0903, 0.5506)
  [26]  (0.0969, 0.5652)
  [27]  (0.0944, 0.5780)
  [28]  (0.0826, 0.5816)
  [29]  (0.0784, 0.5693)
  [30]  (0.0877, 0.5561)
  [31]  (0.1003, 0.5479)
  [32]  (0.0744, 0.4621)
  [33]  (0.0759, 0.4872)
  [34]  (0.0774, 0.5123)
  [35]  (0.0788, 0.5373)
  [36]  (0.0762, 0.5623)
  [37]  (0.0735, 0.5873)
  [38]  (0.0708, 0.6122)
  [39]  (0.0646, 0.6364)
  [40]  (0.0744, 0.4612)
  [41]  (0.0767, 0.4862)
  [42]  (0.0789, 0.5112)
  [43]  (0.0808, 0.5363)
  [44]  (0.0824, 0.5613)
  [45]  (0.0840, 0.5864)
  [46]  (0.0821, 0.6108)
  [47]  (0.0718, 0.6337)
  [48]  (0.0744, 0.6382)
  [49]  (0.0403, 0.6284)
  [50]  (0.0098, 0.6144)
  [51]  (0.0342, 0.5971)
  [52]  (0.0482, 0.5685)
  [53]  (0.0494, 0.5331)
  [54]  (0.0494, 0.4975)
  [55]  (0.0494, 0.4620)
  [56]  (0.0744, 0.4001)
  [57]  (0.0992, 0.7286)
  [58]  (0.4622, 0.7981)
  [59]  (0.8209, 0.6874)
  [60]  (1.0000, 0.4036)
  [61]  (0.7175, 0.2019)
  [62]  (0.3522, 0.2961)
  [63]  (0.0000, 0.4351)

--- KEY VERTICES (corners with angle < 120 degrees) ---
  V0  (0.0977, 0.5667)  angle=56.5 deg
  V1  (0.1771, 0.5589)  angle=105.7 deg
  V2  (0.1362, 0.4288)  angle=79.0 deg
  V3  (0.0744, 0.4510)  angle=76.0 deg
  V4  (0.1030, 0.6347)  angle=166.1 deg
  V5  (0.0744, 0.5327)  angle=154.3 deg
  V6  (0.0869, 0.5469)  angle=35.5 deg
  V7  (0.0883, 0.5605)  angle=63.7 deg
  V8  (0.0739, 0.5695)  angle=57.6 deg
  V9  (0.0569, 0.5614)  angle=89.1 deg
  V10  (0.0764, 0.5342)  angle=148.3 deg
  V11  (0.0629, 0.5372)  angle=124.6 deg
  V12  (0.0744, 0.5479)  angle=33.3 deg
  V13  (0.0903, 0.5506)  angle=56.2 deg
  V14  (0.0969, 0.5652)  angle=35.4 deg
  V15  (0.0944, 0.5780)  angle=61.7 deg
  V16  (0.0826, 0.5816)  angle=88.2 deg
  V17  (0.0784, 0.5693)  angle=54.1 deg
  V18  (0.1003, 0.5479)  angle=73.6 deg
  V19  (0.0744, 0.4621)  angle=166.6 deg
  V20  (0.0646, 0.6364)  angle=168.8 deg
  V21  (0.0744, 0.4612)  angle=171.6 deg
  V22  (0.0718, 0.6337)  angle=54.7 deg
  V23  (0.0744, 0.6382)  angle=136.5 deg
  V24  (0.0098, 0.6144)  angle=120.0 deg
  V25  (0.0744, 0.4001)  angle=153.7 deg
  V26  (0.0992, 0.7286)  angle=74.8 deg
  V27  (0.8209, 0.6874)  angle=40.6 deg
  V28  (1.0000, 0.4036)  angle=86.7 deg
  V29  (0.7175, 0.2019)  angle=50.0 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
    }
),
