=== SAVED CAST: moonless_3_s71 ===
Normalized points: 63
Raw points: N/A

--- NORMALIZED STROKE POINTS (x, y in [0,1], top-left origin) ---
  [ 0]  (0.8920, 0.9388)
  [ 1]  (0.6939, 0.9709)
  [ 2]  (0.4945, 0.9897)
  [ 3]  (0.2940, 0.9973)
  [ 4]  (0.1119, 0.9759)
  [ 5]  (0.0534, 0.7842)
  [ 6]  (0.0254, 0.5864)
  [ 7]  (0.0104, 0.3863)
  [ 8]  (0.0072, 0.1857)
  [ 9]  (0.8920, 0.4708)
  [10]  (0.9306, 0.5288)
  [11]  (0.9383, 0.5822)
  [12]  (0.8825, 0.6189)
  [13]  (0.8137, 0.6082)
  [14]  (0.7541, 0.5891)
  [15]  (0.7509, 0.5196)
  [16]  (0.8021, 0.4845)
  [17]  (0.8663, 0.4576)
  [18]  (0.8920, 0.7592)
  [19]  (0.7872, 0.7562)
  [20]  (0.6823, 0.7590)
  [21]  (0.5773, 0.7618)
  [22]  (0.4724, 0.7645)
  [23]  (0.3674, 0.7673)
  [24]  (0.2626, 0.7655)
  [25]  (0.1578, 0.7590)
  [26]  (0.1237, 0.6952)
  [27]  (0.8920, 0.3969)
  [28]  (0.9309, 0.4306)
  [29]  (0.9576, 0.4718)
  [30]  (0.9223, 0.4764)
  [31]  (0.8718, 0.4665)
  [32]  (0.8353, 0.4374)
  [33]  (0.8108, 0.3925)
  [34]  (0.8599, 0.3773)
  [35]  (0.9091, 0.3621)
  [36]  (0.8920, 0.3709)
  [37]  (0.9480, 0.3803)
  [38]  (0.9928, 0.3972)
  [39]  (0.9700, 0.4408)
  [40]  (0.9132, 0.4425)
  [41]  (0.8565, 0.4442)
  [42]  (0.8248, 0.4070)
  [43]  (0.8442, 0.3714)
  [44]  (0.8964, 0.3490)
  [45]  (0.8920, 1.0000)
  [46]  (0.7922, 0.8802)
  [47]  (0.6934, 0.7595)
  [48]  (0.5989, 0.6354)
  [49]  (0.5044, 0.5113)
  [50]  (0.4121, 0.3856)
  [51]  (0.3218, 0.2585)
  [52]  (0.3044, 0.1151)
  [53]  (0.4027, 0.0000)
  [54]  (0.8920, 0.3449)
  [55]  (0.9268, 0.3863)
  [56]  (0.9070, 0.4142)
  [57]  (0.8594, 0.3974)
  [58]  (0.8124, 0.3706)
  [59]  (0.8132, 0.3285)
  [60]  (0.8527, 0.3078)
  [61]  (0.9066, 0.3112)
  [62]  (0.9606, 0.3147)

--- KEY VERTICES (corners with angle < 120 degrees) ---
  V0  (0.1119, 0.9759)  angle=66.3 deg
  V1  (0.0072, 0.1857)  angle=108.8 deg
  V2  (0.8920, 0.4708)  angle=38.5 deg
  V3  (0.9383, 0.5822)  angle=64.9 deg
  V4  (0.8825, 0.6189)  angle=42.2 deg
  V5  (0.7541, 0.5891)  angle=69.6 deg
  V6  (0.7509, 0.5196)  angle=58.2 deg
  V7  (0.8663, 0.4576)  angle=107.8 deg
  V8  (0.8920, 0.7592)  angle=96.5 deg
  V9  (0.1578, 0.7590)  angle=58.3 deg
  V10  (0.1237, 0.6952)  angle=96.9 deg
  V11  (0.8920, 0.3969)  angle=62.2 deg
  V12  (0.9576, 0.4718)  angle=115.5 deg
  V13  (0.8108, 0.3925)  angle=101.5 deg
  V14  (0.9091, 0.3621)  angle=170.0 deg
  V15  (0.8920, 0.3709)  angle=143.2 deg
  V16  (0.9928, 0.3972)  angle=97.0 deg
  V17  (0.9700, 0.4408)  angle=60.7 deg
  V18  (0.8565, 0.4442)  angle=51.3 deg
  V19  (0.8248, 0.4070)  angle=68.9 deg
  V20  (0.8442, 0.3714)  angle=38.3 deg
  V21  (0.8964, 0.3490)  angle=113.6 deg
  V22  (0.8920, 1.0000)  angle=139.8 deg
  V23  (0.3044, 0.1151)  angle=47.4 deg
  V24  (0.4027, 0.0000)  angle=84.7 deg
  V25  (0.9268, 0.3863)  angle=75.4 deg
  V26  (0.9070, 0.4142)  angle=74.1 deg
  V27  (0.8124, 0.3706)  angle=61.3 deg
  V28  (0.8132, 0.3285)  angle=61.3 deg
  V29  (0.8527, 0.3078)  angle=31.3 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
    }
),
