import openpyxl\nfrom manim import *\nimport numpy as np\nimport xlsxwriter as xw\nimport math\n# 读取xlsx文件\nwb = openpyxl.load_workbook('data.xlsx')\nsheet = wb.active\n\n# 读取A2到C1764的数据\ndata = []\nfor row in sheet.iter_rows(min_row=2, max_row=1746, min_col=1, max_col=3):\n data.append([cell.value for cell in row])\n\ntheta = 2.659569301 #float(input("请输入方向角(弧度制):"))\nphi = 0.974851284 #float(input("请输入高度角(弧度制):"))\n# 输入一个三维坐标和一个三维向量\ninput_coord = np.array([0, 0, 84])\ninput_vector = np.array([math.sin(phi) * math.cos(theta), math.sin(phi) * math.sin(theta),math.cos(phi)])\n\n# 计算输入坐标到读取坐标间的单位方向向量\nunit_direction_vectors = []\nfor coord in data:\n direction_vec = (input_coord - np.array(coord)) / np.linalg.norm(input_coord - np.array(coord))\n unit_direction_vectors.append(direction_vec)\n\n# 计算输入向量在各个读取坐标点处的单位方向向量\ninput_unit_direction_vectors = []\nfor coord in data:\n direction_vec = input_vector / np.linalg.norm(input_vector)\n input_unit_direction_vectors.append(direction_vec)\n\n# 计算以上两个单位方向向量的角平分向量\nangle_bisectors = []\nver = []\nfor i in range(len(data)):\n angle_bisector = (unit_direction_vectors[i] + input_unit_direction_vectors[i]) / np.linalg.norm(unit_direction_vectors[i] + input_unit_direction_vectors[i])\n angle_bisectors.append(angle_bisector)\n ver.append(angle_bisector)\n\n# 打印结果\n#print("输入坐标到读取坐标间的单位方向向量:")\n#for vec in unit_direction_vectors:\n # print(vec)\n\n#print("输入向量在各个读取坐标点处的单位方向向量:")\n#for vec in input_unit_direction_vectors:\n# print(vec)\n\nprint("以上两个单位方向向量的角平分向量:")\nfor vec in angle_bisectors:\n print(vec)\n\n\noutput_wb = xw.Workbook('1.21.10.xlsx')\noutput_sheet = output_wb.add_worksheet()\n\n# 写入数据到Excel文件中\nfor i in range(len(angle_bisectors)):\n for j in range(len(angle_bisectors[i])):\n output_sheet.write(i, j, angle_bisectors[i][j])\n\n# 保存Excel文件\noutput_wb.close()\n这是你写的嘛?为什么?内容:不好意思,我不清楚你在问什么。请问你是在问上面的代码是否是我写的吗?

Python 角度平分向量计算和 Excel 导出

原文地址: https://www.cveoy.top/t/topic/n6fW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录