annotate tvii/bb.py @ 84:0f3af15bb29a

add noise introduction function
author Jeff Hammel <k0scist@gmail.com>
date Sun, 17 Dec 2017 13:55:35 -0800
parents 16bd13cd58bc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
65
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
3
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
4 """
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
5 bounding box
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
6 """
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
7
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
8 import argparse
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
9 import sys
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
10 from .transpose import transpose
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
11
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
12 def bounding_box(*points):
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
13
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
14 return [(min(col), max(col))
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
15 for col in transpose(points)]
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
16
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
17
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
18 def overlap(bb1, bb2):
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
19 """determines if two bounding boxes overlap"""
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
20 # Note: this concludes they are linearly separably,
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
21 # but the converse is not true
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
22
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
23 for (min1, max1), (min2, max2) in zip(bb1, bb2):
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
24 if min1 <= min2 <= max1:
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
25 continue
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
26 if min2 <= max1 <= max2:
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
27 continue
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
28 return False
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
29 return True
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
30 # TODO: this currently returns True and False;
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
31 # it would be much more useful to return the intersection
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
32
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
33 def main(args=sys.argv[1:]):
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
34 """CLI"""
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
35
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
36 # parse command line
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
37 parser = argparse.ArgumentParser(description=__doc__)
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
38 options = parser.parse_args(args)
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
39
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
40 if __name__ == '__main__':
16bd13cd58bc add bounding box functions
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
41 main()