DirectX3D中将用点构成的线段进行平移和旋转

将这一系列(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);

变化前

在这里插入图片描述

变化后

在这里插入图片描述

相关推荐

  1. 使用 PointNet PyTorch3D 进行云分类

    2024-03-30 12:28:01       34 阅读
  2. PCL 计算线段之间距离(3D

    2024-03-30 12:28:01       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 12:28:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 12:28:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 12:28:01       87 阅读
  4. Python语言-面向对象

    2024-03-30 12:28:01       96 阅读

热门阅读

  1. 【神经网络模型】——AI大模型学习

    2024-03-30 12:28:01       40 阅读
  2. CC攻击l

    2024-03-30 12:28:01       34 阅读
  3. Hive详解(4)

    2024-03-30 12:28:01       43 阅读
  4. c++类,矩形面积计算

    2024-03-30 12:28:01       39 阅读
  5. 新能源汽车消费者购车习惯调查方案

    2024-03-30 12:28:01       41 阅读
  6. pytorch | transforms.Compose()函数

    2024-03-30 12:28:01       43 阅读