package com.base.plan.utils;

import com.base.plan.model.entity.SphericalPoint;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class CountTool {

//    /**
//     * 用于求各时刻太阳高度角
//     *
//     * @param sunTime
//     * @param pSat
//     * @return
//     */
//    public double sunAngle(Calendar sunTime, SphericalPoint pSat) {
//        SphericalPoint sunPos = new SphericalPoint();
//        // double pi=3.14159265358979323846;
//        Calendar cstTime = TimeUtils.getCalendar(2000, 1, 1, 20, 0, 0);
//        long count = (sunTime.getTimeInMillis() - cstTime.getTimeInMillis()) / 1000;
//        // T: 从J2000.0起算的儒略世纪数
//        double t = (double) count / 3600.0 / 24.0 / 36525.0;
//        // L: 纽康的太阳几何平黄线（以消除光行差影响），见《球面天文学》 20页
//        double l = 279.0 + 41.0 / 60 + 24.68 / 3600 + 129602768.13 / 3600 * (1 + t) + 1.089 * (1 + t) * (1 + t) / 3600;
//        while (l > 360)
//            l = l - 360;
//        while (l < 0)
//            l = l + 360;
//        // 平黄赤交角
//        double hcAngle = 84381.4480 / 3600.0 - 46.81500 / 3600.0 * t - 0.00059 / 3600.0 * Math.pow(t, 2)
//                + 0.0018130 / 3600.0 * Math.pow(t, 3);
//        // 通过太阳黄经L、黄赤交角hcangle求太阳赤经lon
//        if (l <= 90) {
//            sunPos.setLon(Math.atan(Math.tan(l * Math.PI / 180) * Math.cos(hcAngle * Math.PI / 180)) * 180 / Math.PI);
//        }
//        if (l > 90 && l <= 180) {
//            sunPos.setLon(
//                    180 + Math.atan(Math.tan(l * Math.PI / 180) * Math.cos(hcAngle * Math.PI / 180)) * 180 / Math.PI);
//        }
//        if (l > 180 && l <= 270) {
//            sunPos.setLon(
//                    180 + Math.atan(Math.tan(l * Math.PI / 180) * Math.cos(hcAngle * Math.PI / 180)) * 180 / Math.PI);
//        }
//        if (l > 270 && l <= 360) {
//            sunPos.setLon(
//                    360 + Math.atan(Math.tan(l * Math.PI / 180) * Math.cos(hcAngle * Math.PI / 180)) * 180 / Math.PI);
//        }
//        // 通过太阳黄经L、黄赤交角hcangle求太阳赤纬llat
//        sunPos.setLat(Math.asin(Math.sin(l * Math.PI / 180) * Math.sin(hcAngle * Math.PI / 180)) * 180 / Math.PI);
//        // 赤经从春分点起算，所以减去格林尼治恒星时转化为太阳经度
//        sunPos.setLon(sunPos.getLon() - SgTime(sunTime, 0, 0));
//        while (sunPos.getLon() < 0) {
//            sunPos.setLon(sunPos.getLon() + 360);
//        }
//        while (sunPos.getLon() > 360) {
//            sunPos.setLon(sunPos.getLon() - 360);
//        }
//        // 计算太阳与目标的球面距离：弧度
//        double angle = SphericalAngle(sunPos, pSat);
//        if (angle > 90) {
//            return -90;
//        }
//        // 返回值：太阳高度角
//        else if (angle > 0) {
//            return 90 - angle;
//        } else {
//            return angle;
//        }
//    }
//



}
