|
|
发表于 2022-3-19 21:01:09
|
显示全部楼层
嗯,上面的代码不对,还得考虑点在第几象限的问题,我再想一想
- $ cat main.py
- #!/usr/bin/env python
- #coding=utf-8
- from math import sqrt, pow, acos, fabs, degrees
- def angle(A, B):
- c = sqrt(pow(A[0], 2) + pow(A[1], 2))
- n = 90 - degrees(acos(A[1] / c))
- c = sqrt(pow(B[0], 2) + pow(B[1], 2))
- m = 90 - degrees(acos(B[1] / c))
- n = n if A[0] >= 0 else (90 - n) * 2 + n
- m = m if B[0] >= 0 else (90 - m) * 2 + m
- return fabs(n - m)
- print(angle((3, 9), (4, 5)))
- print(angle((3, 0), (0, 4)))
- print(angle((-3, 9), (4, 5)))
- print(angle((3, 0), (0, -4)))
- $ ./main.py
- 20.224859431168056
- 90.0
- 57.094757077012105
- 90.0
- $
复制代码
|
|