-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvector.py
More file actions
59 lines (38 loc) · 1.24 KB
/
Copy pathvector.py
File metadata and controls
59 lines (38 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import math
from typing import Tuple
def add_vec(a: Tuple, b: Tuple) -> Tuple:
ax, ay, az = a
bx, by, bz = b
return ax + bx, ay + by, az + bz
def sub_vec(a: Tuple, b: Tuple) -> Tuple:
ax, ay, az = a
bx, by, bz = b
return ax - bx, ay - by, az - bz
def mult_vec(a: Tuple, b: Tuple) -> Tuple:
ax, ay, az = a
bx, by, bz = b
return ax * bx, ay * by, az * bz
def norm(a: Tuple) -> float:
ax, ay, az = a
return math.sqrt(ax * ax + ay * ay + az * az)
def normalize(a: Tuple) -> Tuple:
ax, ay, az = a
norm = math.sqrt(ax * ax + ay * ay + az * az)
return ax / norm, ay / norm, az / norm
def mult_scalar(a: Tuple, scalar: float) -> Tuple:
ax, ay, az = a
return ax * scalar, ay * scalar, az * scalar
def add_scalar(a: Tuple, scalar: float) -> Tuple:
ax, ay, az = a
return ax + scalar, ay + scalar, az + scalar
def div_scalar(a: Tuple, scalar: float) -> Tuple:
ax, ay, az = a
return ax / scalar, ay / scalar, az / scalar
def cross(a: Tuple, b: Tuple) -> Tuple:
ax, ay, az = a
bx, by, bz = b
return ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx
def dot(a: Tuple, b: Tuple) -> float:
ax, ay, az = a
bx, by, bz = b
return ax * bx + ay * by + az * bz