zoukankan      html  css  js  c++  java
  • 数学API Math.atan() 和Math.atan2() 三角函数复习

    今天在学习贝塞尔曲线看到需要结合三角函数 以及两个不认识的Api
    :API Math.atan() 和Math.atan2()

    先看下三角函数
    这里写图片描述

    正切函数图:(180为一个周期 即45=45+180)
    这里写图片描述

    正弦
    正余弦函数方程为:
    y = Asin(wx+b)+h ,这个公式里:w影响周期,A影响振幅,h影响y位置,b为初相;

    w:周期就是一个完整正弦曲线图此数值越大sin的周期越小 (cos越大)
    A:振幅两个山峰最大的高度.如果A越大两个山峰越高和越低

    h:你正弦曲线和y轴相交点.(影响正弦图初始高度的位置)

    b:初相会让你图片向x轴平移
    这里写图片描述

    余弦
    这里写图片描述

    Math.atan() 和Math.atan2()
    我们可以使用正切操作将角度转变为斜率,那么怎样利用斜率来转换为角度呢?可以利用斜率的反正切函数将他转换为相应的角度.as中有两个函数可以计算反正切,我们来看一下.
    1、as中Math.atan()
    Math.atan()接受一个参数:用法如下:
    angel=Math.atan(slope)
    angel为一个角度的弧度值,slope为直线的斜率,是一个数字,这个数字可以是负的无穷大到正无穷大之间的任何一个值.
    不过,利用他进行计算比较复杂.因为他的周期性,一个数字的反正切值不止一个.例如atan(-1)的值可能是45度,也可能是225度.这样就是他的周期性,对于正切函数来说,他的周期是180度,所以两个相差180度的角具有相同的正切和斜率:
    tanθ=tan(θ+180)
    然而,Math.atan()只能返回一个角度值,因此确定他的角度非常的复杂,而且,90度和270度的正切是无穷大,因为除数为零,我们也是比较难以处理的~!因此我们更多的会采用第二个函数.
    2、Math.atan2()
    Math.atan2()接受两个参数x和y,方法如下:
    angel=Math.atan2(y,x)
    x 指定点的 x 坐标的数字。
    y 指定点的 y 坐标的数字。
    计算出来的结果angel是一个弧度值,也可以表示相对直角三角形对角的角,其中 x 是临边边长,而 y 是对边边长。
    下面我们来测试一下这两个函数:
    x=Math.atan(1)//计算正切值为1的数字对应的弧度值
    trace(x) //输出一个弧度值0.785398163397448
    x=180*x/Math.PI//转换为角度值
    trace(x) //输出45
    x=Math.atan2(7,7)
    trace(x)//输出0.785398163397448
    x=180*x/Math.PI//转换为角度值
    trace(x)//输出45
    x=Math.atan2(7,-7)
    trace(x)2.35619449019234
    x=180*x/Math.PI//转换为角度值
    trace(x)135
    x=Math.atan2(-7,7)
    trace(x)//输出-0.785398163397448
    x=180*x/Math.PI//转换为角度值
    trace(x)//输出-45
    x=Math.atan2(-7,-7)
    trace(x)//输出-2.35619449019234
    x=180*x/Math.PI//转换为角度值
    trace(x)//输出-135
    //从这些测试可以看出,通过坐标系的自动调整,我们可以很自由的计算出处于不同象限的位置相对应的角度.
    3、计算两点间连线的倾斜角.
    这种方法非常的有用.
    Math.atan2()函数返回点(x,y)和原点(0,0)之间直线的倾斜角.那么如何计算任意两点间直线的倾斜角呢?只需要将两点x,y坐标分别相减得到一个新的点(x2-x1,y2-y1).然后利用他求出角度就可以了.使用下面的一个转换可以实现计算出两点间连线的夹角.
    Math.atan2(y2-y1,x2-x1)
    不过这样我们得到的是一个弧度值,在一般情况下我们需要把它转换为一个角度.
    下面我们用一段代码来测试一下这样的转换.
    //测试,计算点(3,3)和(5,5)构成的连线的夹角
    x=Math.atan2(5-3,5-3)
    trace(x)//输出0.785398163397448
    x=x*180/Math.PI//转换为角度
    trace(x)//输出45

    弧度转角度
    // 用角度表示的角
    B = Math.toDegrees(B);
    角度转弧度
    public static double toRadians(double angdeg)

  • 相关阅读:
    搭建一个属于私人博客
    Python正则表达式的匹配规则
    CentOS 使用yum 安装node.js
    一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在有一个字典,用户输入一个单词,从字典找出这个单词有多少个兄弟单词
    Clion报错 CMake Error at CMakeLists.txt:1 (cmake_minimum_required): CMake 3.
    给定一个整数sum,从n个有序的元素的数组中寻找a,b,使得a+b的结果最接近sum,最快的时间复杂度?
    Go语言通过Docker Go语言SDK获取docker stats的信息
    通过GO程序获取docker version的基本信息
    Go语言实现通过Docker SDK获取docker ps 命令信息&SDK 中docker ps源码解析
    Docker监控docker stats命令的使用与返回参数的意思
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152112.html
Copyright © 2011-2022 走看看