分析c#代码private void CalculatePartial_AvgVelocity_Width() { int index = -1; List<Result_Line> vLines = ResultLineList.Where(line => line.VLineOrder != null).ToList(); for (int i = 0; i < vLines.Count; i++) { index = ResultLineList.IndexOf(vLines[i]); if (vLines[i].VLineOrder == -9999) { continue; } else if (vLines[i - 1].VLineOrder == -9999) { //float leftAlpha = GetInshoreCoefficient(-9999, vLines[i].WaterLvl); float leftAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(-9999, vLines[i - 1].InitPointDistance)); vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)(leftAlpha * vLines[i].AvgVelocity)); } else if (vLines[i].VLineOrder == 9999) { //float rightAlpha = GetInshoreCoefficient(9999, vLines[i].WaterLvl); float rightAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(9999, vLines[i].InitPointDistance)); vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)(rightAlpha * vLines[i - 1].AvgVelocity)); } else { var temp = (vLines[i - 1].AvgVelocity + vLines[i].AvgVelocity) / 2f; vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)temp); } ResultLineList[index] = vLines[i]; ResultLineList[index].WidthBetweenVLine = NumValid.PrecisionConvert_Width(vLines[i].InitPointDistance - vLines[i - 1].InitPointDistance); } }
时间: 2024-02-14 21:33:54 浏览: 23
这段代码是一个 C# 的方法,名为 CalculatePartial_AvgVelocity_Width。它的作用是计算一些结果列表中的元素的部分平均速度和垂直线之间的宽度。具体而言,该方法首先找到列表中所有垂直线元素(即 VLineOrder 不为 null 的元素),然后遍历这些元素,根据垂直线的顺序计算其部分平均速度和与前一个垂直线之间的宽度。其中,如果当前垂直线的顺序为 -9999,那么使用前一个垂直线的信息计算左侧系数,并计算部分平均速度;如果当前垂直线的顺序为 9999,那么使用前一个垂直线的信息计算右侧系数,并计算部分平均速度;否则,计算当前垂直线和前一个垂直线的平均速度,并计算部分平均速度。最后,将计算得到的结果更新到结果列表中。
相关问题
把c#代码转为python c#代码private void CalculatePartial_AvgVelocity_Width() { int index = -1; List<Result_Line> vLines = ResultLineList.Where(line => line.VLineOrder != null).ToList(); for (int i = 0; i < vLines.Count; i++) { index = ResultLineList.IndexOf(vLines[i]); if (vLines[i].VLineOrder == -9999) { continue; } else if (vLines[i - 1].VLineOrder == -9999) { //float leftAlpha = GetInshoreCoefficient(-9999, vLines[i].WaterLvl); float leftAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(-9999, vLines[i - 1].InitPointDistance)); vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)(leftAlpha * vLines[i].AvgVelocity)); } else if (vLines[i].VLineOrder == 9999) { //float rightAlpha = GetInshoreCoefficient(9999, vLines[i].WaterLvl); float rightAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(9999, vLines[i].InitPointDistance)); vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)(rightAlpha * vLines[i - 1].AvgVelocity)); } else { var temp = (vLines[i - 1].AvgVelocity + vLines[i].AvgVelocity) / 2f; vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)temp); } ResultLineList[index] = vLines[i]; ResultLineList[index].WidthBetweenVLine = NumValid.PrecisionConvert_Width(vLines[i].InitPointDistance - vLines[i - 1].InitPointDistance); } }
将C#代码转换为Python代码如下:
def CalculatePartial_AvgVelocity_Width():
index = -1
vLines = list(filter(lambda line: line.VLineOrder != None, ResultLineList))
for i in range(len(vLines)):
index = ResultLineList.index(vLines[i])
if vLines[i].VLineOrder == -9999:
continue
elif vLines[i - 1].VLineOrder == -9999:
leftAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(-9999, vLines[i - 1].InitPointDistance))
vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity(float(leftAlpha * vLines[i].AvgVelocity))
elif vLines[i].VLineOrder == 9999:
rightAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(9999, vLines[i].InitPointDistance))
vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity(float(rightAlpha * vLines[i - 1].AvgVelocity))
else:
temp = (vLines[i - 1].AvgVelocity + vLines[i].AvgVelocity) / 2.0
vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity(float(temp))
ResultLineList[index] = vLines[i]
ResultLineList[index].WidthBetweenVLine = NumValid.PrecisionConvert_Width(vLines[i].InitPointDistance - vLines[i - 1].InitPointDistance)
把c#函数转为python函数private void CalculatePartial_AvgVelocity_Width() { int index = -1; List<Result_Line> vLines = ResultLineList.Where(line => line.VLineOrder != null).ToList(); for (int i = 0; i < vLines.Count; i++) { index = ResultLineList.IndexOf(vLines[i]); if (vLines[i].VLineOrder == -9999) { continue; } else if (vLines[i - 1].VLineOrder == -9999) { //float leftAlpha = GetInshoreCoefficient(-9999, vLines[i].WaterLvl); float leftAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(-9999, vLines[i - 1].InitPointDistance)); vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)(leftAlpha * vLines[i].AvgVelocity)); } else if (vLines[i].VLineOrder == 9999) { //float rightAlpha = GetInshoreCoefficient(9999, vLines[i].WaterLvl); float rightAlpha = NumValid.PrecisionConvert_Coefficient(GetInshoreCoefficient(9999, vLines[i].InitPointDistance)); vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)(rightAlpha * vLines[i - 1].AvgVelocity)); } else { var temp = (vLines[i - 1].AvgVelocity + vLines[i].AvgVelocity) / 2f; vLines[i].PartialAvgVelocity = NumValid.PrecisionConvert_Velocity((float)temp); } ResultLineList[index] = vLines[i]; ResultLineList[index].WidthBetweenVLine = NumValid.PrecisionConvert_Width(vLines[i].InitPointDistance - vLines[i - 1].InitPointDistance); } }
def calculate_partial_avg_velocity_width():
index = -1
v_lines = [line for line in result_line_list if line.VLineOrder is not None]
for i in range(len(v_lines)):
index = result_line_list.index(v_lines[i])
if v_lines[i].VLineOrder == -9999:
continue
elif v_lines[i - 1].VLineOrder == -9999:
left_alpha = precision_convert_coefficient(get_inshore_coefficient(-9999, v_lines[i - 1].InitPointDistance))
v_lines[i].PartialAvgVelocity = precision_convert_velocity(left_alpha * v_lines[i].AvgVelocity)
elif v_lines[i].VLineOrder == 9999:
right_alpha = precision_convert_coefficient(get_inshore_coefficient(9999, v_lines[i].InitPointDistance))
v_lines[i].PartialAvgVelocity = precision_convert_velocity(right_alpha * v_lines[i - 1].AvgVelocity)
else:
temp = (v_lines[i - 1].AvgVelocity + v_lines[i].AvgVelocity) / 2
v_lines[i].PartialAvgVelocity = precision_convert_velocity(temp)
result_line_list[index] = v_lines[i]
result_line_list[index].WidthBetweenVLine = precision_convert_width(v_lines[i].InitPointDistance - v_lines[i - 1].InitPointDistance)
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)