1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| package com.flightfeather.uav.model.epw
|
| import com.flightfeather.uav.model.BaseWeight
| import kotlin.math.PI
| import kotlin.math.abs
| import kotlin.math.atan2
| import kotlin.math.sqrt
|
| /**
| *
| */
| class WindDirWeight : BaseWeight() {
| 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)
| }
|
| fun getWeight(p1: Pair<Double, Double>, p2: Pair<Double, Double>, wd: Int): Double {
| val dx = p2.first - p1.first
| val dy = p2.second - p1.second
| var x1 = atan2(dy, dx) * 180 / PI
| 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)
| }
| }
|
|