#! /usr/bin/gawk -f # Last edited on 2023-09-16 10:45:17 by stolfi # Reads an ".okys" file, prints stats about the vector connecting # the first two features. All features must be "C" or "X". BEGIN { split("", oc) split("", d) split("", a) n = 0; sd = 0; } /^[AB]/{ i = n; oc[i] = $1; x1=$4; y1=$5; x2=$8; y2=$9; a[i] = atan2(dy,dx)*180/3.141526 dx = x1-x2; dy=y1-y2; d[i] = sqrt(dx*dx+dy*dy); sd += d[i]; n++; next; } END{ avg = sd/n; se2 = 0; maxe = 0 maxe_d = 0 maxe_oc = "???" for (i = 0; i < n; i++) { ei = d[i] - avg; printf "%s %+5.0f° %7.2f %+7.2f\n", oc[i], a[i], d[i], ei > "/dev/stderr"; printf "%s %+5.0f %7.2f %+7.2f\n", oc[i], a[i], d[i], ei; if ((maxe_oc == "???") || (abs(ei) > abs(maxe))) { maxe = ei; maxe_d = d[i]; maxe_oc = oc[i]; } se2 += e*e; } printf "avg d = %7.2f\n", avg > "/dev/stderr"; printf "dev d = %7.2f\n", sqrt(se2/n) > "/dev/stderr"; printf "max e = %+7.2f for %s d = %.2f\n", maxe, maxe_oc, maxe_d > "/dev/stderr"; } function abs(x) { return (x < 0 ? -x : x) }