TurnModelOnGamma 函数说明

函数描述

TurnModelOnGamma 函数用于在“拍摄/潜水”模式下,围绕空穴中心以角度Γ\Gamma旋转模型轮廓。该函数计算模型轮廓和肋骨的旋转后坐标。

参数说明

  • xs0 (float): 空穴中心的初始x偏移。
  • ys0 (float): 空穴中心的初始y偏移。
  • COS_G (float): 旋转角度Γ\Gamma的余弦值。
  • SIN_G (float): 旋转角度Γ\Gamma的正弦值。
  • Xmod (numpy.ndarray): 模型轮廓的初始x坐标数组。
  • Ymod (numpy.ndarray): 模型轮廓的初始y坐标数组。
  • Xrib (numpy.ndarray): 模型肋骨的初始x坐标数组。
  • Yrib (numpy.ndarray): 模型肋骨的初始y坐标数组。
  • Ncon (int): 模型锥段数量。

返回值

  • XGmod (numpy.ndarray): 旋转后的模型轮廓x坐标数组。
  • YGmod (numpy.ndarray): 旋转后的模型轮廓y坐标数组。
  • XGrib (numpy.ndarray): 旋转后的模型肋骨x坐标数组。
  • YGrib (numpy.ndarray): 旋转后的模型肋骨y坐标数组。

数学公式

旋转后的坐标(xt,yt)(x_t, y_t)通过以下公式计算:
xt=xs0+x0cos(Γ)+y0sin(Γ) x_t = x_{s0} + x_0 \cdot \cos(\Gamma) + y_0 \cdot \sin(\Gamma)
yt=ys0x0sin(Γ)+y0cos(Γ) y_t = y_{s0} - x_0 \cdot \sin(\Gamma) + y_0 \cdot \cos(\Gamma)

python代码

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
def TurnModelOnGamma(self):
# xs0, ys0, COS_G, SIN_G, Xmod, Ymod, Xrib, Yrib, Ncon
"""
在“拍摄/潜水”模式下,围绕空穴中心以角度 Gamma 旋转模型轮廓。

参数:
xs0 (float): 空穴中心的初始x偏移。
ys0 (float): 空穴中心的初始y偏移。
COS_G (float): 旋转角度 Gamma 的余弦值。
SIN_G (float): 旋转角度 Gamma 的正弦值。
Xmod (numpy.ndarray): 模型轮廓的初始x坐标数组。
Ymod (numpy.ndarray): 模型轮廓的初始y坐标数组。
Xrib (numpy.ndarray): 模型肋骨的初始x坐标数组。
Yrib (numpy.ndarray): 模型肋骨的初始y坐标数组。
Ncon (int): 模型锥段数量。

返回:
XGmod (numpy.ndarray): 旋转后的模型轮廓x坐标数组。
YGmod (numpy.ndarray): 旋转后的模型轮廓y坐标数组。
XGrib (numpy.ndarray): 旋转后的模型肋骨x坐标数组。
YGrib (numpy.ndarray): 旋转后的模型肋骨y坐标数组。
"""
# Ncon (int): 模型锥段数量。
Ncon = self.Ncon
# COS_G (float): 旋转角度 Gamma 的余弦值。
COS_G = self.COS_G
# SIN_G (float): 旋转角度 Gamma 的正弦值。
SIN_G = self.SIN_G
# xs0 (float): 空穴中心的初始x偏移。
xs0 = self.xs0
# ys0 (float): 空穴中心的初始y偏移。
ys0 = self.ys0
# Xmod (numpy.ndarray): 模型轮廓的初始x坐标数组。
Xmod = self.Xmod
# Ymod (numpy.ndarray): 模型轮廓的初始y坐标数组。
Ymod = self.Ymod
# Xrib (numpy.ndarray): 模型肋骨的初始x坐标数组。
Xrib = self.Xrib
# Yrib (numpy.ndarray): 模型肋骨的初始y坐标数组。
Yrib = self.Yrib

# 初始化旋转后的模型轮廓坐标
XGmod = np.zeros(2 * Ncon + 4)
YGmod = np.zeros(2 * Ncon + 4)

# 初始化旋转后的模型肋骨坐标
XGrib = np.zeros(2 * (Ncon - 1))
YGrib = np.zeros(2 * (Ncon - 1))
# 计算模型轮廓的旋转
for i in range(2 * Ncon + 4):
XGmod[i] = xs0 + Xmod[i] * COS_G + Ymod[i] * SIN_G
YGmod[i] = ys0 - Xmod[i] * SIN_G + Ymod[i] * COS_G

# 计算模型肋骨的旋转
for i in range(2 * (Ncon - 1)):
XGrib[i] = xs0 + Xrib[i] * COS_G + Yrib[i] * SIN_G
YGrib[i] = ys0 - Xrib[i] * SIN_G + Yrib[i] * COS_G

# XGmod (numpy.ndarray): 旋转后的模型轮廓x坐标数组。(TurnModelOnGamma)
self.XGmod = XGmod
# YGmod (numpy.ndarray): 旋转后的模型轮廓y坐标数组。(TurnModelOnGamma)
self.YGmod = YGmod
# XGrib (numpy.ndarray): 旋转后的模型肋骨x坐标数组。(TurnModelOnGamma)
self.XGrib = XGrib
# YGrib (numpy.ndarray): 旋转后的模型肋骨y坐标数组。(TurnModelOnGamma)
self.YGrib = YGrib