天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 9|回复: 0

object之根据点、旋转轴、旋转角度,计算点旋转之后的位置

[复制链接]
  • TA的每日心情
    开心
    昨天 15:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    Point Util::Rotate(Point p, double angle, double x, double y, double z) //注意这里的(x,y,z)是单位化的旋转轴向量
    {
        double m[3][3];
        //D3DXVec3Normalize();
        //angle = 1.57;
        double u = x;
        double v = y;
        double w = z;

        m[0][0] = cosf(angle) + (u * u) * (1 - cosf(angle));
        m[0][1] = u * v * (1 - cosf(angle)) + w * sinf(angle);
        m[0][2] = u * w * (1 - cosf(angle)) - v * sinf(angle);
        //m[0][3] = 0;

        m[1][0] = u * v * (1 - cosf(angle)) - w * sinf(angle);
        m[1][1] = cosf(angle) + v * v * (1 - cosf(angle));
        m[1][2] = w * v * (1 - cosf(angle)) + u * sinf(angle);
        //m[1][3] = 0;

        m[2][0] = u * w * (1 - cosf(angle)) + v * sinf(angle);
        m[2][1] = v * w * (1 - cosf(angle)) - u * sinf(angle);
        m[2][2] = cosf(angle) + w * w * (1 - cosf(angle));
        //m[2][3] = 0;

        /*m[3][0] = 0;
        m[3][1] = 0;
        m[3][2] = 0;
        m[3][3] = 1;*/

        Vector3d temp(p.x, p.y, p.z);
        Matrix3d mt(3,3);
        mt(0, 0) = m[0][0];
        mt(0, 1) = m[0][1];
        mt(0, 2) = m[0][2];
        mt(1, 0) = m[1][0];
        mt(1, 1) = m[1][1];
        mt(1, 2) = m[1][2];
        mt(2, 0) = m[2][0];
        mt(2, 1) = m[2][1];
        mt(2, 2) = m[2][2];

        Vector3d temp1 = mt * temp;

        Point pp;
        pp.x = temp1[0];
        pp.y = temp1[1];
        pp.z = temp1[2];

        return pp;
    }

     

     

     

     

    object之根据点、旋转轴、旋转角度,计算点旋转之后的位置
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|

    GMT+8, 2024-7-1 05:57 , Processed in 0.056736 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表