Cos和Sin在圆和前后判断的运用

三角函数:

概念:用来描述三角形中某个角和对应的三条边的比例关系。

正弦:sin<θ>(sin<theta>)=对边/斜边

余弦:cos<θ>(cos<theta>)=邻边/斜边

正切:tan<θ>(tan<theta>)=对边/邻边


正弦函数曲线:随着θ角度不断增大,sinθ的值的变化周期


余弦函数曲线:正弦函数曲线左移90度


反三角函数:已知比例关系,反推出角度或者弧度。

反正弦:Arcsin(0.5)=30度

反余弦:Arccos

反正切:Arctan

向量的乘法:

向量的点乘:a(ax,ay,az) · b(bx.by.bz)

数学运算:a·b = axbx + ayby + azbz,各分量分别相乘再相加

1、满足乘法交换律

2、结果是标量

几何意义:

a·b = |a| * |b| * cos<a,b>,<a,b>夹角范围0~180度,两个向量夹角越小,相似度越高

a·b = (|a| * cos<a,b>) * |b|,最重要的几何意义就是求投影

1、a向量在b向量方向上投影的长度再乘以b向量的模长

2、当b向量为单位向量的时候,结果就是:a向量在b向量方向上投影的长度

3、当a向量和b向量都是单位向量的时候,结果就是:两个向量的夹角的余弦


敌人的正前方和敌人与自己连线的夹角,小于90度,在敌人前方,大于90度,在敌人后方

API Vector3.Dot(Vector3 lhs,Vector3 rhs),两个向量点乘满足乘法交换律,但叉乘不行

API Vector3.Angle,直接计算两个向量之间的夹角


思考题:入射光线和反射光线不在一个水平线上


using System.Collections;using System.Collections.Generic;using UnityEngine;publicclass EnemyLook : MonoBehaviour

{

    public Transform player;

    publicfloat result;

    publicfloat distance;

    // Use this for initializationvoid Start()

    {

        ////向量点乘的数学运算//Vector3 enemy2Player = player.position - transform.position;

        //Vector3 enemyForward = transform.forward;

        //result = enemy2Player.x * enemyForward.x + enemy2Player.y * enemyForward.y + enemy2Player.z + enemyForward.z;

        //把向量变成单位向量Vector3 enemy2Player = (player.position - transform.position).normalized;

        Vector3 enemyForward = transform.forward;

        //计算两个向量之间的夹角result = Vector3.Dot(enemy2Player, enemyForward);

        //计算两个物体之间的距离distance = Vector3.Distance(player.position, transform.position);

        //API:计算两个向量之间的夹角

        //Vector3.Angle();    }

    // Update is called once per framevoid Update()

    {

    }

    privatevoid OnGUI()

    {

        //if (result > 0)

        //{

        //    GUILayout.Label("在敌人前方");

        //}

        //else

        //{

        //    GUILayout.Label("在敌人后方");

        //}if(result > Mathf.Cos(30* Mathf.Deg2Rad) && distance <5)

        {

            GUILayout.Label("在扇形范围内:"+ Mathf.Acos(result) * Mathf.Rad2Deg +"度");

        }

        else        {

            GUILayout.Label("不在扇形范围内:"+ Mathf.Acos(result) * Mathf.Rad2Deg +"度");

        }

    }

}






using System.Collections;using System.Collections.Generic;using UnityEngine;publicclass TestTrans : MonoBehaviour {

    public Transform Target;

    publicfloat distance;

    privatefloatSkillDistance =5;//扇形距离privatefloatSkillJiaodu =60;//扇形的角度

    // Use this for initializationvoid Start () {

        ////偶然性编程distance = Vector3.Distance(transform.position, Target.position);//距离Vector3 norVec = transform.rotation * Vector3.forward;

        Vector3 temVec = Target.position - transform.position;

        Debug.DrawLine(transform.position, norVec, Color.red);//画出技能释放者面对的方向向量Debug.DrawLine(transform.position, Target.position, Color.green);//画出技能释放者与目标点的连线floatjiajiao = Mathf.Acos(Vector3.Dot(norVec.normalized, temVec.normalized)) * Mathf.Rad2Deg;

        if(distance <= SkillDistance)

        {

            if(jiajiao <= SkillJiaodu)

            {

                Debug.Log("在扇形范围内");

            }

            else            {

                Debug.Log("不在扇形范围内");

            }

        }

    }


      // Update is called once per framevoid Update () {


    }

}


using System.Collections;using System.Collections.Generic;using UnityEngine;publicclass CrystalMove : MonoBehaviour {

    //public Transform startTrans;

    //public float moveSpeed = 1;

    //public float rotSpeed = 1;publicfloatrotateSpeed =30;

    //调节上下频率和浮动publicfloatamplitude = 1f;

    publicfloatfrequency = 1f;

    // Use this for initializationvoid Start () {


      }


      // Update is called once per framevoid Update () {

        //    transform.Rotate(Vector3.up, Space.World);

        //    Vector3 delta = Vector3.up * Mathf.Sin(Time.time) * moveSpeed*0.25F;

        //    transform.position = startTrans.position + delta;transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed);

        floatsin = Mathf.Sin(Time.time * frequency) * amplitude;

        transform.Translate(Vector3.up * sin, Space.World);

    }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容