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

今天搞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(-y / 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;
    }
}

时间: 2024-07-30 05:31:46

J2ME里面的一些未实现的三角函数的相关文章

J2ME 弹球游戏 关于碰撞的问题

问题描述 小弟模拟力的概念根据作用给求的力的角度和大小算出下一点坐标,但在碰撞反弹方面有点迷茫,想过办法,就是写一个障碍类,有X,Y坐标信息和它的角度信息,这样球的入射角和障碍物的角度就可以算出来弹出角了,可是~我要画一条以正上为0度的斜30度的一条线长度已知起始坐标坐标已知,各位高手咋画哇? 解决方案 解决方案二:J2ME的直线API是用起点和终点来画线你只要算出终点坐标,就可以画了drawLine(intx1,inty1,intx2,inty2)解决方案三:引用1楼kf156的回复: J2M

J2ME程序开发全方位基础讲解汇总

程序     一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识:   1.Java语法基础:包括基本数据类型.关键字.运算符等等   2.面向对象的思想:类和对象的概念,继承和多态等等.   3.异常处理   4.多线程 J2ME

J2ME伪高手先锋开讲—扫雷游戏的设计

设计 J2ME伪高手先锋开讲--扫雷游戏的设计 首先我要装得像高手一样,来假装把系统稍微分析一下. 一般,按照java得开发模式,这种程序一般是分为三个模块来开发. 如下三个: 一个程序运作的主文件,也就是一个midlet的继承: 一个界面的表示类,也就是一个canvas的继承,界面上应该有些菜单,如new.exit 什么的,那就应该要 implements一个 commandListener消息监听类(大家可以把java的消息监听理解为一个线程,一直像倭寇那样对看得顺眼的东西虎视耽耽,当然这里

再议j2me进度条与线程化模型

作者:FavoYang Email:favoyang@yahoo.com 欢迎交流Keywords:线程化模型 j2me UI设计 内容提要:本文是<j2me进度条与线程化模型>一文的续(以后简称原文,没看过的建议看一下).讨论了原文中使用的线程模型的不足,并针对她的缺点提出了新的改进办法并给出了改进后的实现.因原文中UI部分有灵活的扩展性,未作更改. 版权声明:本文同时发表在www.j2medev.com和我的Blog(blog.csdn.net/alikeboy)上,如果需要转载,有三个途

使用J2ME发送手机短信息

在程序中,发送短信息的方式一般有三种: 1. 使用程序在网络上发送短信息,例如各大网站的短信业务.这种方式是通过程序将信息发送给运营商的网关服务器,然后通过运营商的网络发送给手机. 2. 在计算机中,通过数据线连接到手机,然后通过手机来发送短信息.这种方式是通过使用AT指令来实现.爱立信手机的AT指令你可以在以下地址找到:http://mobilityworld.ericsson.com.cn/development/download_hit.asp 3. 通过在手机中运行的程序来发送短信息.这

J2ME Personal Information Management (PIM) 概览

移动环境中的 Personal Information Management (PIM) 随着新设备不断上市,在移动设备上提供 Address Book.Calendar 和 Task List 成为了一项必然的要求.J2ME 应用程序也需要访问 这些数据.可选包 JSR 75 Personal Information Management (PIM) 提供了这个功能. 它不仅允许访问包含联系人.约会和任务的本地个人信息,还允许访问基于附加到设备上的 SIM 卡和 Local and Remot

在J2ME/MIDP中实现图像旋转

J2ME是标准版java(J2SE)面向手机.PDA等各类移动和嵌入式设备的缩减版本,是一种获得众多厂商的支持和广泛使用的移动设备开发平台.图一展示了J2ME技术的体系结构.它分为三层:虚拟机层,配置层,和简表层. 配置层(Configuration)通过对功能的描述,把千差万别的嵌入式设备进行了功能的说明和分类.它把运算功能有限.内存较小.电力有限的设备,定义在CLDC(有限连接设备配置)规范中,这类设备有PDA .手机等:把运算能力相对较佳.内存相对较大.电力供应比较充足的设备,定义在CDC

J2me流媒体技术实现讨论[2]

cleverpig said"之所以有些格式的媒体文件不支持分段播放,是因为它们文件中不含有索引信息. 就像在以顺序方式读取文件时无法seek一样.. 这个问题可以通过人工(或者用程序)将文件分割后部署放到服务器上来解决. " 以及"随着iTunes4.9版的发布,podcaster(pod播客们)能够建立自己的podcast,并可以通过增加幻灯片式的图片使其更加吸引人.而且在附加信息中的URL还可使用户门自由的找到其他的podcast资源.这成为了podcast世界的&qu

保护您的J2ME/MIDP应用程序

XML 数字签名技术可以帮助您为无线 Web 服务应用程序实现轻量级且灵活的安全性解决方案.在本文中,Michael Yuan 讨论了 XML 数字签名及其应用程序的重要性.他还提供了 Bouncy Castle 密码术包的数字签名 API,并提供了在 J2ME/MIDP 无线前端和 JSP 页后端之间的安全 XML 消息传递环境中的示例. 无线 Web 服务中的 Java 技术 基于 Java 的 Web 服务和无线 Java 开发是 JavaOne 2002 的两个最突出的主题.它们代表普及