此文并未按照一个函数一篇blog的方式进行写作;原因很简单,接下来要介绍到的几个函数都是三角函数,并且都只是对C标准库中的三角函数的一次调用,并未有其他任何处理,十分清晰明了。
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是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是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是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是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是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求反正切值,将结果压栈。