hdu 2898 旋转 三维空间一点绕一轴旋转后坐标 几何

转载 2015年07月24日 19:04:13

参考链接:http://m.blog.csdn.net/blog/YJX_xx/24883665

实用代码函数:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<cmath>
using namespace std;
float aa[4],bb[4];
float theta;
float  c;
float  s;
void Rotate_Point3D(float theta, float nx, float ny, float nz, float *aa, float *bb)
{
    float len = sqrtf(nx * nx + ny * ny + nz * nz); //单位化
    nx /= len;
    ny /= len;
    nz /= len;
    bb[0] = aa[0] * (nx * nx *(1-c)+ c)          +aa[1] *  (nx * ny * (1 - c)- nz * s)  +  aa[2] * (nx * nz * (1 - c) + ny * s);
    bb[1] = aa[0] * (nx * ny * (1 - c) + nz * s)  +aa[1] * (ny * ny * (1 - c) + c)        +  aa[2] * (ny * nz * (1 - c) - nx * s);
    bb[2] = aa[0] * (nx * nz * (1 - c) - ny * s) +aa[1] * (ny * nz * (1 -c) + nx *s)      +  aa[2] * (nz * nz * (1 - c) + c);
}
int main()
{
    float nx,ny,nz;
    while(cin>>aa[0]>>aa[1]>>aa[2])
    {
        cin>>nx>>ny>>nz;
        cin>>theta;
        c=cosf(theta);
        s=sinf(theta);
        Rotate_Point3D(theta,nx,ny,nz,aa,bb);
        cout<<setiosflags(ios::fixed)<<setprecision(3)<<bb[0]<<' '<<bb[1]<<' '<<bb[2]<<endl;
    }

}


相关文章推荐

三维空间里一个点绕坐标轴旋转

原地址:http://blog.csdn.net/qiuchangyong/archive/2010/09/02/5859628.aspx 在三维空间里一个点绕X轴 Y轴 Z轴旋转一定弧度后新的点的坐...

三维空间里一个点绕矢量旋转后的新的点的坐标

在三维空间里一个点绕X轴 Y轴 Z轴旋转一定弧度后新的点的坐标是容易计算的,问题是如果它所绕的旋转轴是一个任意矢量(x,y,z)的话,怎么知道旋转angle弧度后新的点的坐标呢? 在OPENGL里有一...

空间三维点绕任意空间直线旋转

绕任意轴旋转的情况比较复杂,主要分为两种情况,一种是平行于坐标轴的,一种是不平行于坐标轴的,对于平行于坐标轴的,我们首先将旋转轴平移至与坐标轴重合,然后进行旋转,最后再平移回去。 将旋转轴平移至...

三维空间绕坐标轴的旋转变换

 三维空间中的旋转变换比二维空间中的旋转变换复杂。除了需要指定旋转角外,还需指定旋转轴。     若以坐标系的三个坐标轴x,y,z分别作为旋转轴,则点实际上只在垂直坐标轴的平面上作二维旋转。此时用二维...

径向基函数插值(1)

当我们遇到高维的数据,二维或者三维的数据时,由于数据的不完整,需要预测一些数值,一般我们的方法是用曲面重构, 曲面重构可分为:1、插值2、逼近 曲面插值我们一般使用 径向基插值的方法: RBF (Ra...

3D Dirichlet Free-Form Deformation(三维Dirichlet自由变形)

 自由变形(Free-Form Deformation, 简称FFD)方法是常用的一种与物体表示无关的变形方法,被广泛地应用于计算机动画和几何建模领域中。FFD方法不对物体直接变形,而是对物体所嵌入的...

三维空间中的几何变换-平移旋转缩放

深入学习了下图形几何变换,主要是绕任意轴旋转部分(其他的已有一定基础),现记录学习笔记。...

HDU 4998 Rotate(计算几何 绕点旋转)

HDU 4998 Rotate(计算几何 绕点旋转)

hdu5953 三维空间旋转

题目大意给定若干个3×33\times3的旋转矩阵,对每个矩阵求一个到其他矩阵的最短距离。 两个旋转矩阵的距离做如下定义:对单位球上的任意点PP,经过第一个旋转矩阵的旋转后得到的点为P1P_1,经过...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 2898 旋转 三维空间一点绕一轴旋转后坐标 几何
举报原因:
原因补充:

(最多只允许输入30个字)