Commit 3977a49c09db1eab6a1973d4a44508e6b0bd1546
1 parent
b90e16c5
Exists in
master
and in
68 other branches
Add: a module that contains math functions
Showing
2 changed files
with
36 additions
and
0 deletions
Show diff stats
.gitattributes
| ... | ... | @@ -187,6 +187,7 @@ invesalius/gui/widgets/platebtn.py -text |
| 187 | 187 | invesalius/gui/widgets/slice_menu.py -text |
| 188 | 188 | invesalius/i18n.py -text |
| 189 | 189 | invesalius/invesalius.py -text |
| 190 | +invesalius/math_utils.py -text | |
| 190 | 191 | invesalius/presets.py -text |
| 191 | 192 | invesalius/project.py -text |
| 192 | 193 | invesalius/reader/__init__.py -text | ... | ... |
| ... | ... | @@ -0,0 +1,35 @@ |
| 1 | +#!/usr/bin/env python | |
| 2 | +# -*- coding: utf-8 -*- | |
| 3 | + | |
| 4 | +import math | |
| 5 | +import numpy | |
| 6 | + | |
| 7 | +def calculate_distance(p1, p2): | |
| 8 | + """ | |
| 9 | + Calculates the euclidian distance between p1 and p2 points. | |
| 10 | + | |
| 11 | + >>> calculate_distance((0, 0), (1, 0)) | |
| 12 | + 1.0 | |
| 13 | + | |
| 14 | + >>> calculate_distance((0, 0), (0, 1)) | |
| 15 | + 1.0 | |
| 16 | + """ | |
| 17 | + return math.sqrt(sum([(j-i)**2 for i,j in zip(p1, p2)])) | |
| 18 | + | |
| 19 | +def calculate_angle(v1, v2): | |
| 20 | + """ | |
| 21 | + Calculates the angle formed between vector v1 and v2. | |
| 22 | + | |
| 23 | + >>> calculate_angle((0, 1), (1, 0)) | |
| 24 | + 90.0 | |
| 25 | + | |
| 26 | + >>> calculate_angle((1, 0), (0, 1)) | |
| 27 | + 90.0 | |
| 28 | + """ | |
| 29 | + cos_ = numpy.dot(v1, v2)/(numpy.linalg.norm(v1)*numpy.linalg.norm(v2)) | |
| 30 | + angle = math.degrees(math.acos(cos_)) | |
| 31 | + return angle | |
| 32 | + | |
| 33 | +if __name__ == '__main__': | |
| 34 | + import doctest | |
| 35 | + doctest.testmod() | ... | ... |