J2ME里面的一些未实现的三角函数

简介: 今天搞J2ME里面计算经纬度,没想到J2ME这么多限制,连几个很简单的三角函数也不给提供完全,还要直接写.没办法,自己动手好了.留个代码,方便以后参考学习吧. package com.ken.math;/** *//** * 通过计算公式实现反正切、反正弦、反余弦<br> * Tan(X)=Sin(X)/Cos(x) <br> * ArcSin(X)=ArcTan(
今天搞J2ME里面计算经纬度,没想到J2ME这么多限制,连几个很简单的三角函数也不给提供完全,还要直接写.没办法,自己动手好了.留个代码,方便以后参考学习吧.
package  com.ken.math;

/**
 * 通过计算公式实现反正切、反正弦、反余弦<br>
 * Tan(X)=Sin(X)/Cos(x) <br>
 * ArcSin(X)=ArcTan(X/Sqrt(1-Sqr(X)))<br>
 * ArcCos(X)=ArcTan(Sqrt(1-Sqr(X))/X)<br>
 * 
 * 
@author <a href="mailto:xzknet@gmail.com">Ken_xu</a>
 * 
@version 1.0 Copyright 2008-5-4 下午04:09:04
 
*/

public   class  SuperMath  {
    
/**
     * 反正切<br>
     * radian为正切值,这个函数的值域为-π/2~π/2
     * 
     * 
@param radian
     *            弧度为单位的角度
     * 
@return 该角度所对应的反正切
     * 
@author Ken_xu
     
*/

    
public static double actTan(double radian) {
        System.out.println(radian);
        
double retval = 0d;
        
if (Math.abs(radian) <= 1.0d{
            retval 
= radian / (1.0D + 0.28d * sqr(radian));
        }
 else {
            retval 
= -radian / (sqr(radian) + 0.28d);
            
if (radian < -1.0d{
                retval 
= retval - Math.PI / 2;
            }
 else {
                retval 
= retval + Math.PI / 2;
            }

        }

        
return retval;
    }


    
/**
     * 反正切<br>
     * 正切值为y/x,因此该函数求的是y/x所对应的角,这个函数的值域为-π~π
     * 
     * 
@param y
     * 
@param x
     * 
@return 该角度所对应的反正切
     * 
@author Ken_xu
     
*/

    
public static double actTan(double y, double x) {
        
if (y == 0.0d && x == 0.0d)
            
return 0.0d;
        
if (x > 0.0d)
            
return actTan(y / x);
        
if (x < 0.0F)
            
if (y < 0.0d)
                
return (-(Math.PI - actTan(y / x)));
            
else
                
return (Math.PI - actTan(-/ x));
        
return y >= 0.0F ? Math.PI / 2 : Math.PI / 2;
    }


    
/**
     * 反正弦
     * 
     * 
@param radian
     *            弧度为单位的角度
     * 
@return 该角度所对应的反正弦
     * 
@author Ken_xu
     
*/

    
public static double actSin(double radian) {
        
// ArcSin(X)=ArcTan(X/Sqrt(1-Sqr(X)))
        double retval = actTan(radian / Math.sqrt(1 - sqr(radian)));
        
return retval;
    }


    
/**
     * 反余弦
     * 
     * 
@param radian
     *            弧度为单位的角度
     * 
@return 该角度所对应的反余弦
     * 
@author Ken_xu
     
*/

    
public static double actCos(double radian) {
        
// ArcCos(X)=ArcTan(Sqrt(1-Sqr(X))/X)
        double retval = actTan(Math.sqrt(1 - sqr(radian)) / radian);
        
return retval;
    }


    
/**
     * 平方函数
     * 
     * 
@param x
     * 
@return 平方值( x * x )
     * 
@author Ken_xu
     
*/

    
public static double sqr(double x) {
        
return x * x;
    }

}


相关文章
|
9月前
|
存储 C语言
牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)
牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)
87 0
|
9月前
|
算法 搜索推荐 程序员
第五十练 请以递归方式实现计算给定数字的幂的函数
第五十练 请以递归方式实现计算给定数字的幂的函数
43 4
|
9月前
29.输入三个实数,判断能否构成三角形;若能,再说明是何种类型的三角形
29.输入三个实数,判断能否构成三角形;若能,再说明是何种类型的三角形
77 0
|
9月前
|
算法 测试技术 C++
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数
|
9月前
输入三个整数,以这三个数为边长,判断是否构成三角形;若不能输出”error”,若构成三角形,计算它的面积,保留2位小数输出。
输入三个整数,以这三个数为边长,判断是否构成三角形;若不能输出”error”,若构成三角形,计算它的面积,保留2位小数输出。
73 0
第7章 符号计算——7.7 符号积分变换
第7章 符号计算——7.7 符号积分变换
|
存储
多状态动态规划之删除并获得点数
多状态动态规划之删除并获得点数
学C的第十三天【应用多文件的形式实现 三子棋 程序(重点);练习:1. 打印9*9乘法口诀表、2. 求10个整数中的最大值、3. 分数加减交叉计算、4. 数一下 1到 100 的整数中出现了多少个9】
9.数组的应用实例1:三子棋(综合以前学习的知识) 三子棋的实现:(重点都在注释中) 1. 游戏不退出,继续玩下一把(循环) 2. 应用多文件的形式写代码
【随心所记】矩阵A的行列式不等于0,是A可逆的充要条件吗?答:是这样的
【随心所记】矩阵A的行列式不等于0,是A可逆的充要条件吗?答:是这样的
【随心所记】矩阵A的行列式不等于0,是A可逆的充要条件吗?答:是这样的

热门文章

最新文章