三角函数
  1. 序言
  2. math_sin
  3. math_cos
  4. math_tan
  5. math_asin
  6. math_acos
  7. math_atan

序言

此文并未按照一个函数一篇blog的方式进行写作;原因很简单,接下来要介绍到的几个函数都是三角函数,并且都只是对C标准库中的三角函数的一次调用,并未有其他任何处理,十分清晰明了。

math_sin

math_sin是lua函数math.sin的具体实现,其目的是返回正弦值。 math_sin的实现:

static int math_sin (lua_State *L) {
    lua_pushnumber(L, l_mathop(sin)(luaL_checknumber(L, 1)));
    return 1;            
}

math_sin直接调用sin求正弦值,并将结果压栈。

math_cos

math_cos是lua函数math.cos的具体实现,其目的是返回余弦值。 math_cos的实现:

static int math_cos (lua_State *L) {
    lua_pushnumber(L, l_mathop(cos)(luaL_checknumber(L, 1)));
    return 1;
}

math_cos直接调用cos求余弦值,将结果压栈。

math_tan

math_tan是lua函数math.tan的具体实现,其目的是返回正切值。 math_tan的实现:

static int math_tan (lua_State *L) {
    lua_pushnumber(L, l_mathop(tan)(luaL_checknumber(L, 1)));
    return 1;
}

math_tan直接调用tan求正切值,将结果压栈。

math_asin

math_asin是lua函数math.asin的具体实现,其目的是返回反正弦值。 math_asin的实现:

static int math_asin (lua_State *L) {
    lua_pushnumber(L, l_mathop(asin)(luaL_checknumber(L, 1)));
    return 1;
}

math_asin直接调用asin求反正弦值,将结果压栈。

math_acos

math_acos是lua函数math.acos的具体实现,其目的是返回反余弦值。 math_acos的实现:

static int math_acos (lua_State *L) {
    lua_pushnumber(L, l_mathop(acos)(luaL_checknumber(L, 1)));
    return 1;
}

math_acos直接调用acos求反余弦值,将结果压栈。

math_atan

math_atan是lua函数math.atan的具体实现,其目的是返回反正切值。 math_atan的实现:

static int math_atan (lua_State *L) {
    lua_Number y = luaL_checknumber(L, 1);
    lua_Number x = luaL_optnumber(L, 2, 1);
    lua_pushnumber(L, l_mathop(atan2)(y, x));
    return 1;
}

math_atan使用两个参数y,x来找到结果落在哪个象限。当只有一个参数y时,默认赋值1给x。math_atan通过atan2求反正切值,将结果压栈。