TypeError: unsupported operand type(s) for -: 'list' and 'tuple'def transform_point_set(points, max_point, distance, angle): # 平移向量 translation_vector = np.array([distance * np.cos(anglenp.pi/180), distance * np.sin(anglenp.pi/180)]) # 旋转矩阵 rotation_matr
时间: 2023-06-23 10:08:25 浏览: 90
小程序报错: Uncaught TypeError: Converting circular structure to JSON
5星 · 资源好评率100%
ix = np.array([[np.cos(anglenp.pi/180), -np.sin(anglenp.pi/180)], [np.sin(anglenp.pi/180), np.cos(anglenp.pi/180)]]) # 将点集转换为 numpy 数组 point_array = np.array(points) # 对点集进行平移和旋转 point_array = (point_array - np.array(max_point)) * rotation_matrix + np.array(max_point) + translation_vector # 将 numpy 数组转换为列表 point_list = point_array.tolist() return point_list
在这段代码中,错误是因为列表 `point_list` 是通过将 numpy 数组转换而来的,但在 `point_array` 进行平移和旋转时,使用的是列表 `max_point` 而不是 numpy 数组 `max_point`。因此,将 `max_point` 转换为 numpy 数组即可解决问题。修改后的代码如下:
```python
def transform_point_set(points, max_point, distance, angle):
# 平移向量
translation_vector = np.array([distance * np.cos(angle*np.pi/180), distance * np.sin(angle*np.pi/180)])
# 旋转矩阵
rotation_matrix = np.array([[np.cos(angle*np.pi/180), -np.sin(angle*np.pi/180)], [np.sin(angle*np.pi/180), np.cos(angle*np.pi/180)]])
# 将点集转换为 numpy 数组
point_array = np.array(points)
max_point_array = np.array(max_point)
# 对点集进行平移和旋转
point_array = (point_array - max_point_array) @ rotation_matrix + max_point_array + translation_vector
# 将 numpy 数组转换为列表
point_list = point_array.tolist()
return point_list
```
阅读全文