Skip to content

Instantly share code, notes, and snippets.

@vlevit
Last active August 29, 2015 14:06

Revisions

  1. vlevit revised this gist Sep 5, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion meanangle.py
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@ def mean_angle(angles):
    maxedge = max(edges)
    start = (edges.index(maxedge) + 1) % len(edges)
    angles2 = angles[:start] + [a - 360 for a in angles[start:]]
    mean = sum(angles2[start:] + angles2[:start]) / float(len(angles))
    mean = float(sum(angles2)) / len(angles)
    if mean < 0:
    mean += 360
    return mean
  2. vlevit created this gist Sep 5, 2014.
    21 changes: 21 additions & 0 deletions meanangle.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    #!/usr/bin/python2
    import sys

    def mean_angle(angles):
    edges = [a - angles[i] for i, a in enumerate(angles[1:])] + [360 - angles[-1] + angles[0]]
    maxedge = max(edges)
    start = (edges.index(maxedge) + 1) % len(edges)
    angles2 = angles[:start] + [a - 360 for a in angles[start:]]
    mean = sum(angles2[start:] + angles2[:start]) / float(len(angles))
    if mean < 0:
    mean += 360
    return mean


    if __name__ == '__main__':
    if len(sys.argv) < 2:
    print("usage: meanangle ANGLES")
    raise SystemExit(2)
    angles = sorted(map(int, sys.argv[1:]))
    mean = mean_angle(angles)
    print("mean angle: {}".format(mean))