From 3bb4fb15c664d29d179083698fdad35a661b1d7f Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期四, 28 八月 2025 14:57:40 +0800 Subject: [PATCH] 2025.8.28 1. 添加走航季度报告相关统计功能(待完成) --- src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt | 32 ++++++++++++++++++++++---------- 1 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt b/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt index 16baf70..7074a30 100644 --- a/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt +++ b/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt @@ -1,32 +1,44 @@ package com.flightfeather.uav.model.epw +import com.flightfeather.uav.lightshare.bean.CompanySOP +import com.flightfeather.uav.lightshare.bean.DataVo +import com.flightfeather.uav.model.BaseSOP import com.flightfeather.uav.model.BaseWeight +import com.flightfeather.uav.socket.eunm.FactorType import kotlin.math.PI import kotlin.math.abs import kotlin.math.atan2 -import kotlin.math.sqrt /** - * + * 椋庡悜鏉冮噸 */ -class WindDirWeight : BaseWeight() { +class WindDirWeight(var defaultLocation: Pair<Double, Double>?) : BaseWeight<DataVo, BaseSOP>() { + + override val tag: String = "椋庡悜鏉冮噸" + override val sectionValues: List<Double> = listOf(22.5, 67.5, 112.5, 157.5, 180.0) + override val weights: List<Double> = listOf(1.0, 0.8, 0.5, 0.2, 0.1) - fun getWeight(deg: Double):Double { - return weightCal(deg) + override fun onWeightFactor(mData: DataVo, sop: BaseSOP): Double { + val p1 = if (mData.lng == null || mData.lat == null || mData.lng == .0 || mData.lat == .0) defaultLocation else Pair(mData.lng!!, mData.lat!!) + p1 ?: return .0 + val p2 = Pair(sop.ciLongitude!!.toDouble(), sop.ciLatitude!!.toDouble()) + val wd = mData.getFactorData(FactorType.WIND_DIRECTION) ?: 0.0 + return getAngle(p1, p2, wd) } - fun getWeight(p1: Pair<Double, Double>, p2: Pair<Double, Double>, wd: Int): Double { + + private fun getAngle(p1: Pair<Double, Double>, p2: Pair<Double, Double>, wd: Double): Double { val dx = p2.first - p1.first val dy = p2.second - p1.second - var x1 = atan2(dy, dx) * 180 / PI + var x1 = atan2(dy, dx) * 180 / PI + 180 if (x1 < 0) x1 += 360 var x2 = 270 - wd if (x2 < 0) x2 += 360 x1 = abs(x2 - x1) - if (x1>180) x1 = 360 - x1 - - return weightCal(x1) + if (x1 > 180) x1 = 360 - x1 +// println("澶硅锛�$x1") + return x1 } } \ No newline at end of file -- Gitblit v1.9.3