将这一系列(x,y,z)平移 (5, 0, 0),然后再绕y轴旋转45度
clc;
clear;
% 从文件中读取坐标数据
data = load('coordinates.txt'); % 假设文件名为 coordinates.txt,包含 x、y 和 z 坐标
% 获取 x、y 和 z 坐标
x = data(:, 1);
y = data(:, 2);
z = data(:, 3);
% 将坐标组合成路线点
routePoints = [x, y, z];
% 设置旋转角度和平移量
rotationAngle = deg2rad(45); % 将角度转换为弧度
translationVector = [5.0, 0.0, 0.0]; % 平移量为 (5, 0, 0)
% 创建旋转矩阵(绕Y轴旋转45度)
rotationMatrix = makehgtform('yrotate', rotationAngle);
% 创建平移矩阵
translationMatrix = makehgtform('translate', translationVector);
% 组合矩阵(先平移,再旋转)
transformMatrix = rotationMatrix * translationMatrix;
% 对路线上的每个点应用变换
for i = 1:size(routePoints, 1)
% 将点表示为齐次坐标
point = [routePoints(i, :) 1];
% 应用变换
transformedPoint = transformMatrix * point';
% 更新路线上的点
routePoints(i, :) = transformedPoint(1:3)';
end
% 打开文件以供写入
fileID = fopen('coordinates_end.txt', 'w');
% 将点坐标写入文件
for i = 1:size(routePoints, 1)
fprintf(fileID, '%.6f,%.6f,%.6f,\n', routePoints(i, 1), routePoints(i, 2), routePoints(i, 3));
end
% 关闭文件
fclose(fileID);
变化前
变化后
将这一系列(x,y,z)平移 (-5, 0, 0),然后再绕y轴旋转-45度
clc;
clear;
% 从文件中读取坐标数据
data = load('coordinates_end.txt'); % 假设文件名为 coordinates.txt,包含 x、y 和 z 坐标
% 获取 x、y 和 z 坐标
x = data(:, 1);
y = data(:, 2);
z = data(:, 3);
% 将坐标组合成路线点
routePoints = [x, y, z];
% 设置旋转角度和平移量
rotationAngle = deg2rad(-45); % 将角度转换为弧度
translationVector = [-5.0, 0.0, 0.0]; % 平移量为 (-5, 0, 0)
% 创建旋转矩阵(绕Y轴旋转45度)
rotationMatrix = makehgtform('yrotate', rotationAngle);
% 创建平移矩阵
translationMatrix = makehgtform('translate', translationVector);
% 组合矩阵(先平移,再旋转)
transformMatrix = rotationMatrix * translationMatrix;
% 对路线上的每个点应用变换
for i = 1:size(routePoints, 1)
% 将点表示为齐次坐标
point = [routePoints(i, :) 1];
% 应用变换
transformedPoint = transformMatrix * point';
% 更新路线上的点
routePoints(i, :) = transformedPoint(1:3)';
end
% 打开文件以供写入
fileID = fopen('coordinates_end1.txt', 'w');
% 将点坐标写入文件
for i = 1:size(routePoints, 1)
fprintf(fileID, '%.6f,%.6f,%.6f,\n', routePoints(i, 1), routePoints(i, 2), routePoints(i, 3));
end
% 关闭文件
fclose(fileID);