高斯坐标正反算
vb吧
全部回复
仅看楼主
level 1
GPN 楼主
哪位大佬有高斯坐标正反算的代码啊 求求求 很急 太难了 孩子真的写不出来😭😭😭
2023年12月18日 16点12分 1
level 1
'已知量注释
'QiDianX——起点北坐标
'QiDianY——起点东坐标
'QiDianLc As Double——起点里程
'QiDianFWJ——起点切线弧度输入
'Length——线元长度
'SP_Radius——起点半径
'EP_Radius——终点半径
'XianYuanPianXiang——线元偏向,左输入-1,右为1
'JiSuanDianLiCheng——求算点里程
'Offset——求算点偏距
'GetValue——返回值,返回N坐标输入x,返回E坐标随意输入
'Skew_angle——斜交角(右角)缺省值为正交90,当为正交时可不输入任何值,为斜交时输入右交角值,格式与切线方位角同
Public Function Gauss(QiDianX As Double, QiDianY As Double, QiDianLc As Double, QiDianFWJ As Double, Length As Double, SP_Radius As Double, EP_Radius As Double, XianYuanPianXiang As Integer, JiSuanDianLiCheng As Double, Offset As Double, getValue As String, Optional Skew_angle As Double) As Double
Dim c As Double, d As Double, W As Double, f As Double, m As Double, X As Double, n As Double
Dim Az As Double, Y As Double
'斜交角缺省值设置
If IsMissing(Skew_angle) Then '用来检测在调用IsMissing函数所在的过程或函数时是否未提供可选的Variant类型参数
Skew_angle = PI / 2
Else
Skew_angle = PI / 2
End If
'切线方位角为弧度
Az = QiDianFWJ
'计算起点曲率
If SP_Radius = 0 Then SP_Radius = 1E+45
If EP_Radius = 0 Then EP_Radius = 1E+45
c = 1 / SP_Radius
'计算曲率变化率
d = (SP_Radius - EP_Radius) / 2 / Length / SP_Radius / EP_Radius
'计算里程差
W = Abs(JiSuanDianLiCheng - QiDianLc)
'计算桩坐标
f = 1 - L:
m = 1 - K
X = QiDianX + W * (a * Cos(Az + XianYuanPianXiang * K * W * (c + K * W * d)) + b * Cos(Az + XianYuanPianXiang * L * W * (c + L * W * d)) + b * Cos(Az + XianYuanPianXiang * f * W * (c + f * W * d)) + a * Cos(Az + XianYuanPianXiang * m * W * (c + m * W * d)))
Y = QiDianY + W * (a * Sin(Az + XianYuanPianXiang * K * W * (c + K * W * d)) + b * Sin(Az + XianYuanPianXiang * L * W * (c + L * W * d)) + b * Sin(Az + XianYuanPianXiang * f * W * (c + f * W * d)) + a * Sin(Az + XianYuanPianXiang * m * W * (c + m * W * d)))
'计算法线方位角
n = Az + XianYuanPianXiang * W * (c + W * d) + Skew_angle
'计算边桩坐标
X = X + Offset * Cos(n): Y = Y + Offset * Sin(n)
'数值输出
If getValue = "x" Or getValue = "X" Then
Gauss = X
ElseIf getValue = "y" Or getValue = "Y" Then
Gauss = Y
Else
Gauss = n
End If
End Function
2023年12月22日 03点12分 3
1