返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 1943|回复: 0

[原创] 三维数学-角度与弧度换算、正反三角函数及小练习

[复制链接]
发表于 2021-6-14 11:41:48 | 显示全部楼层 |阅读模式
本帖最后由 da11 于 2021-6-14 11:56 编辑

/*
    * 角的度量方式
     * · 角度Degree与弧度Radian
     *   两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。
     *   当弧长等于圆周长的360分之一时,夹角为1度。
     *   弧长等于圆的半径时,夹角为1弧度(3分之一π)。

     *   
     * · 角度与弧度的换算
     *   PI(π)= 180度  1弧度=180度/PI  1角度=PI/180度
     *   
     *   角度转换弧度数学公式:弧度 = 角度数 * PI / 180
     *   API:弧度 = 角度数 * Mathf.Deg2Rad
     *   
     *   弧度转换角度数学公式:角度 = 弧度数 * 180/PI
     *   API:角度 = 弧度数 * Mathf.Rad2Deg
     *  
     * · 在日常生活中角度制应用比较广泛。
     * · 在三角函数中弧度制可以简化计算。
     *
     * 三角函数
     * · 建立了直角三角形中角与边长比值的关系。
     * · 可用于根据  一边一角,计算另外一边长!
     *
     * · 公式
     *   正弦: sin x = a(对边) / c(斜边) ;
     *   余弦:  cos x = b(临边) / c(斜边) ;
     *   正切:  tan x = a(对边) / b(临边) ;
     *   
     * · API:
     *  Mathf.Sin(float radian); //传递弧度实参
        Mathf.Cos(float radian); //传递弧度实参
        Mathf.Tan(float radian); //传递弧度实参




     *

     * 反三角函数
     * · 反正弦,反余弦,反正切等函数的总称。
     * · 可用于  根据两边长,计算角度!
     * · 公式:
     *   反正弦: arcsin a(对边) / c(斜边) = x ;
     *   反余弦: arccos b(临边) / c(斜边) = x ;
     *   反正切:  arctan a(对边) / b(临边) = x;
     * · API:
     *  Mathf.Asin(float radian); //传递弧度实参
        Mathf.Acos(float radian); //传递弧度实参
        Mathf.Atan(float radian); //传递弧度实参
*/

    private void Update()
    {
        SmallWork();
    }

    //角度弧度换算方法--重点课程
    private void JDHSFF()
    {
        //定义角度字段
        float JD=60;

        //角度换算弧度直接套公式法  弧度 = 角度数 * PI / 180
        //Mathf.PI 为一个π
        float HD1 = JD * Mathf.PI / 180;

        //Mathf.Deg2Rad 为角度换算弧度的Mathf属性(约等于半个π)(常用)
        float HD2 = JD * Mathf.Deg2Rad;

        //定义弧度字段
        float HD = 2;

        //弧度换算角度直接套公式法  角度 = 弧度数 * 180/PI
        float JD1 = HD * 180 / Mathf.PI;

        //Mathf.Rad2Deg 为弧度换算角度的Mathf属性(常用)
        float JD2 = HD * Mathf.Rad2Deg;

    }

    //三角函数方法
    private void Triangle()
    {
        //已知:角度 x  临边长 b
        //求:对边长 a
        //数学公式: a = tan x * b
        float x = 60;
        float b = 25;
        float a;

        //Mathf.San、Mathf.Cos、Mathf.Tan函数类的实参是要给的弧度,如果单位是角度,需要使用Mathf.Deg2Rad换算成弧度!
        a = Mathf.Tan(x * Mathf.Deg2Rad) * b;

        //已知:对边长 a  临边长 b
        //求:角度 x
        //数学公式: arc tan a / b = x

        //反三角函数求出来的x,单位是弧度,需要使用Mathf.Rad2Deg换算成角度。
        x = Mathf.Atan(a / b) * Mathf.Rad2Deg;

        print(x);
    }



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
 楼主| 发表于 2021-6-14 11:42:27 | 显示全部楼层
本帖最后由 da11 于 2021-6-14 11:46 编辑

    //小练习1:已知一个物体在世界坐标系worldPoint中,求他的右方向30度,10米长后的世界坐标,并使用Debug.DrawLine画出来
    //小练习2:已知一个物体在世界坐标系worldPoint中,求他的左方向60度,20米长后的世界坐标,并使用Debug.DrawLine画出来

    private void SmallWork()
    {
        //小练习1
        //sin x = a(对边) / c(斜边);
        float Slength = 10;
        float x = 30;
        float a = Mathf.Sin(x * Mathf.Deg2Rad) * Slength;
        float c = Mathf.Cos(x * Mathf.Deg2Rad) * Slength;

        print(transform.TransformPoint(transform.position));
        print(transform.TransformPoint(new Vector3(a, 0, c)));

        Debug.DrawLine(this.transform.position, transform.TransformPoint(new Vector3(a, 0, c)),Color.red);

        //小练习2
        //sin x = a(对边) / c(斜边);
        float Slength1 = 20;
        float x1 = 60;
        float a1 = Mathf.Sin(x1 * Mathf.Deg2Rad) * Slength1;
        float c1 = Mathf.Cos(x1 * Mathf.Deg2Rad) * Slength1;

        print(transform.TransformPoint(transform.position));
        print(transform.TransformPoint(new Vector3(-a1, 0, c1))); //左方向其实就是x轴加上负号!

        Debug.DrawLine(this.transform.position, transform.TransformPoint(new Vector3(-a1, 0, c1)), Color.red);

    }

//运行实例图:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
回复 支持 反对

使用道具 举报

游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表