採用角度對五行的建模
在某種意義上,可以認為兩元素之間的五行關係,其實是一個圓上的角度距離,因此如果知道了兩個元素,那麼實際上可以求取它們之間的角度,如果A與B,順時針為0~72度之間,可以認為B與A的五行關係比和,如果是72~144度之間可以認為是A生B,這樣就模擬生克循環。
這裡的難度是如何代碼化,求取兩個向量的夾角,寫成python代碼如下:
import numpy as np
def get_clockwise_rotation_angle(vector1, vector2):
# 計算兩個向量的點積
dot_product = np.dot(vector1, vector2)
# 計算兩個向量的模
norm_vector1 = np.linalg.norm(vector1)
norm_vector2 = np.linalg.norm(vector2)
# 計算餘弦值
cos_theta = dot_product / (norm_vector1 * norm_vector2)
# 使用反餘弦函數計算弧度值
radians = np.arccos(cos_theta)
# 將弧度值轉換為角度
degrees = np.degrees(radians)
# 使用叉積來確定旋轉方向
cross_product = np.cross(vector1, vector2)
# 如果叉積為正,調整角度為360度 - 角度
if cross_product > 0:
degrees = 360 - degrees
return degrees