简介

旋转变换,对某个点进行绕x,y,z的变换。

代码

#include <iostream>
#include <vector>
#include <algorithm>
// -------------------- OpenMesh
using namespace std;
#define PI 3.1415926 static void MatVec3(const double m[9], const double x[3], double y[3]) {//3*3 * 3*1 的矩阵
y[0] = m[0] * x[0] + m[1] * x[1] + m[2] * x[2];
y[1] = m[3] * x[0] + m[4] * x[1] + m[5] * x[2];
y[2] = m[6] * x[0] + m[7] * x[1] + m[8] * x[2];
} //旋转一定的角度 in 输入点 out 变换输出点
void Transform_Cloth_RotBryantAngle(double angle_x, double angle_y, double angle_z, const double in[], double out[]) {
angle_x *= PI / 180.0;
angle_y *= PI / 180.0;
angle_z *= PI / 180.0; const double Rx[9] = {
1, 0, 0,
0, cos(angle_x),-sin(angle_x),
0, sin(angle_x),cos(angle_x)
};
const double Ry[9] = {
cos(angle_y), 0, sin(angle_y),
0 , 1, 0,
-sin(angle_y), 0, cos(angle_y)
};
const double Rz[9] = {
cos(angle_z), -sin(angle_z), 0,
sin(angle_z), cos(angle_z), 0,
0, 0, 1
};
double res[3] = { 0 };
MatVec3(Rx, in, out);
res[0] = out[0], res[1] = out[1], res[2] = out[2];
MatVec3(Ry, res, out);
res[0] = out[0], res[1] = out[1], res[2] = out[2];
MatVec3(Rz, res, out);
return;
} int main()
{
double point[3] = {1, 0, 0};
double out[3] = { 0 };
Transform_Cloth_RotBryantAngle(90,90,90,point, out); cout << "POINT " << out[0] << " " << out[1] << " " << out[2] << std::endl;
system("pause");
}

旋转变换,对某个点进行绕x,y,z的变换。的更多相关文章

  1. 3d旋转--transform-style: preserve-3d,translate3d(x,y,z),perspective()

    transform-style: preserve-3d,translate3d(x,y,z),perspective() 让其倾斜的核心:加perspective(600px)让其动的核心:rans ...

  2. 在数组中找出x+y+z=0的组合

    就是找x+y=-z的组合 转化为找出值为-z满足x+y=-z的组合 解法一: 为了查找,首先想到排序,为了后面的二分,nlogn, 然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlo ...

  3. 用宏 x y z,找出最大值最小值

    #define max(x,y,z) ((x)>(y)?(x):(y))>(z)?((x)>(y)?(x):(y)):(z) #define min(x,y,z) ((x)<( ...

  4. 【Python3练习题 005】输入三个整数x,y,z,请把这三个数由小到大输出

    import re x, y, z = re.split(',| |,| ', input('请输入3个数字,用逗号或空格隔开:'))x, y, z = int(x), int(y), int(z) ...

  5. 【功能】返回数据类型、字节长度和在内部的存储位置.DUMP(w[,x[,y[,z]]])

    DUMP(w[,x[,y[,z]]]) [功能]返回数据类型.字节长度和在内部的存储位置. [参数] w为各种类型的字符串(如字符型.数值型.日期型--) x为返回位置用什么方式表达,可为:8,10, ...

  6. 18年春招某编程题:有三个整数X,Y,Z,要求进行若干次操作使得X,Y,Z相等

    题目描述: 给定三个整数X,Y,Z,要求进行若干次操作使得X,Y,Z相等,操作有两种: 1.从X,Y,Z中选择两个数都加1. 2.从X,Y,Z中选择一个数加2. 求最少需要多少次操作. 题目思路: 1 ...

  7. x+y+z=n的正整数解

    题:x+y+z=n,其中(n>=3),求x,y,z的正整数解的个数根据图象法:x>=1,y>=1,x+y<=n-1

  8. ‘,’之后要留空格,如 Function(x, y, z)

    ‘,’之后要留空格,如 Function(x, y, z).如果‘;’不是一行的结束 符号,其后要留空格,如 for (initialization; condition; update). #inc ...

  9. 【严蔚敏】【数据结构题集(C语言版)】1.16 自大至小依次输出读入的三个整数X,Y,Z

    #include <stdio.h> #include<stdlib.h> int main() { int x,y,z,temp; scanf("%d%d%d&qu ...

  10. 15 输入三个整数x,y,z,请把这三个数由小到大输出。

    题目:输入三个整数x,y,z,请把这三个数由小到大输出. public class _015ThreeNumberSort { public static void main(String[] arg ...

随机推荐

  1. jmeter操作数据库增删改查的注意事项

    一,场景 1.在jmeter造数据后,可通过数据库查询数据库是否新增数据,判断脚本执行是否成功. 2.有些数据新增不可重复,因此脚本执行后需要将新增的数据删除,才能再次执行脚本. 二.连接数据库 在通 ...

  2. krpano.js导出为模块方便vue等框架使用的问题

    作为一个全栈(干),前端commonjs amd 那些东西没有研究过,一直用es6内置的export和import(不香吗?).最近写一个全景项目,有一个krpano.js文件官网案例是标签引入,可我 ...

  3. SpringBoot事件驱动开发

    应用启动过程生命周期事件感知(9大事件).应用运行中事件感知(无数种) 事件发布:ApplicationEventPublisherAware或注入:ApplicationEventMulticast ...

  4. 【HUST】网安|操作系统实验|实验二 进程管理与死锁

    目的 1)理解进程/线程的概念和应用编程过程: 2)理解进程/线程的同步机制和应用编程: 任务 1)在Linux下创建一对父子进程. 2)在Linux下创建2个线程A和B,循环输出数据或字符串. 3) ...

  5. 操作系统综合题之“采用时间片轮转调度算法(Round-Robin,RR)执行,分时系统中的进程可能出现的状态变化”

    一.问题:某分时系统中的进程可能出现下图所示的状态变化,请回答下列问题: 1.根据图示,您认为该系统采用的是什么进程调度策略? 2.把图中所示的每一个状态变化的原因填在下表相应位置. 变化 原因 1 ...

  6. live555开发笔记(三):live555创建RTSP服务器源码剖析,创建h264文件rtsp服务器源码深度剖析

    前言   对于live555的rtsp服务器有了而基本的了解之后,进一步对示例源码进行剖析,熟悉整个h264文件流媒体的开发步骤.   Demo         播放本地文件,多路播放的时候,总是以第 ...

  7. 第六章: SEO与交互指标

    第6章: SEO与交互指标 在当今的SEO环境中,Google越来越重视用户交互指标,如页面停留时长.交互性能等.本章将深入探讨如何优化网页速度和用户交互体验,以提升SEO效果和用户满意度. 1. G ...

  8. AD 权限维持-金票银票攻击

    本文通过 Google 翻译 Domain Persistence – Golden Ticket and Silver Ticket Attacks 这篇文章所产生,本人仅是对机器翻译中部分表达别扭 ...

  9. React-Native开发鸿蒙NEXT-一次审核闪退的排查思路

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  10. Linux日志 查找关键字及其前后的信息

      文章<五分钟扫盲:25个工作中常用的Linux命令>介绍了常用的Linux命令,属于理论知识,这里知行合一,介绍如何从Linux日志中通过关键字过滤出我们需要的信息.   这里以查看名 ...