在某种意义上,可以认为两元素之间的五行关系,其实是一个圆上的角度距离,因此如果知道了两个元素,那么实际上可以求取它们之间的角度,如果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
发表评论