import numpy as np
from math import *
def VaryPoint(data, axis, degree):
xyzArray = {
'X': np.array([[1, 0, 0],
[0, cos(radians(degree)), -sin(radians(degree))],
[0, sin(radians(degree)), cos(radians(degree))]]),
'Y': np.array([[cos(radians(degree)), 0, sin(radians(degree))],
[0, 1, 0],
[-sin(radians(degree)), 0, cos(radians(degree))]]),
'Z': np.array([[cos(radians(degree)), -sin(radians(degree)), 0],
[sin(radians(degree)), cos(radians(degree)), 0],
[0, 0, 1]])}
newData = np.dot(data, xyzArray[axis])
return newData
def SaveTxt(txtAll):
for data_ in txtAll:
np.savetxt(data_[1], data_[0])
def ProcssPoint(readPath, varyData, sessionNum, savePath):
txtAll = []
for i in range(0, sessionNum + 1):
pathNew = readPath + str(i) + ".txt"
savePath_ = savePath + str(i) + ".txt"
print(pathNew)
try:
dataInitNp = np.loadtxt(pathNew)
print(dataInitNp)
for para in varyData:
dataInitNp = VaryPoint(dataInitNp[:, :3], para[0], para[1])
txtAll.append([dataInitNp, savePath_])
except:
continue
return txtAll
if __name__ == "__main__":
readPath = "File/DoD/3cm/BU/" # 待处理点云地址
savePath = 'File/DoD/3cm/VaryBU/' # 处理后点云保存地址
sessionNum = 14 # 场次
# 旋转轴,XYZ均可填入
varyData = [
["Z", 41],
["Y", 61]]
txtAll = ProcssPoint(readPath, varyData, sessionNum, savePath)
SaveTxt(txtAll)