Рефакторинг.

This commit is contained in:
sasha80
2023-08-11 16:41:30 +03:00
parent f43020f23b
commit b4f7763083
8 changed files with 63 additions and 58 deletions

View File

@@ -7,7 +7,7 @@ extends Node
func type_is_num(val) -> bool: return (typeof(val) == TYPE_INT) or (typeof(val) == typeof(0.0))
## Производит преобразование из угла в радианы
## Возвращае значение в радианах для угла в градусах [param val].
func radians(val: float): return (val * PI) / 180.0
@@ -24,7 +24,8 @@ func is_overlap(x1, x2, y1, y2): return max(x1, y1) <= min(x2, y2)
## Производит преобразование из декартовой в полярную систему координат
func pos_calc(freq: float, aoa: float, pos0: Vector2, r0: float, r1: float, f0: float, df: float):
func pos_calc(freq: float, aoa: float, pos0: Vector2, r0: float, r1: float, f0: float, f1: float):
var df = f1 - f0
var r = ((freq - f0) / df) * r1 + r0
var aoa_rad = Tools.radians(aoa) - PI / 2.0
var x = cos(aoa_rad) * r + pos0.x
@@ -72,9 +73,10 @@ func map_range(val: float, a0: float, a1: float, b0: float, b1: float) -> float:
## Возвращает true, если точка внутри заданного полигона
func is_point_in_polygon(pos: Vector2, p: PackedVector2Array) -> bool:
assert(len(p))
var j: int = len(p) - 1
var odd_nodes: int = 0
for i in range(len(p)):
for i in len(p):
if ((p[i].y < pos.y and p[j].y >= pos.y or p[j].y < pos.y and p[i].y >= pos.y) and (p[i].x <= pos.x or p[j].x <= pos.x)):
odd_nodes ^= int((p[i].x + (pos.y - p[i].y) / (p[j].y - p[i].y) * (p[j].x - p[i].x) < pos.x))
j = i