哪位大佬帮忙改写成TB格式的。感谢感谢,一共有2个这样的
2023-10-23 19:38

import numpy as np

def average_curvature(curve, length):
    \"\"\"
    计算给定曲线的平均曲率

    参数:
    curve: 一个包含x和y坐标的列表或numpy数组,表示曲线上的点
    length: 曲线的长度

    返回:
    平均曲率
    \"\"\"
    # 将曲线分成多个小段,并计算每一段的曲率半径
    num_segments = 100
    segment_length = length / num_segments
    curvature_list = []
    for i in range(num_segments):
        start_point = curve[i]
        end_point = curve[i+1]
        mid_point = (start_point + end_point) / 2
        dx = end_point[0] - start_point[0]
        dy = end_point[1] - start_point[1]
        曲率半径 = (dx**2 + dy**2)**1.5 / np.abs(dx*dy)
        curvature_list.append(曲率半径)

    # 计算平均曲率
    average_curvature = sum(curvature_list) / len(curvature_list)
    return average_curvature

评论区
zhong_4619xd

老师辛苦了。感谢大师

2023-10-25 22:36
zhong_4619xd

老师辛苦了。非常感觉你的帮助

另外一个也能请您出手看看吗:我准备用这两个函数来算一条曲线是不是滑溜。穷举出一个阀值后,做流畅的行情。

import numpy as np

def flexure(curve):

   \"\"\"

   计算给定曲线的折数


   参数:

   curve: 一个包含x和y坐标的列表或numpy数组,表示曲线上的点


   返回:

   折数

   \"\"\"

   # 初始化折数为0

   flexure_count = 0


   # 遍历曲线上的每一段,计算折数

   for i in range(len(curve)-1):

       start_point = curve[i]

       end_point = curve[i+1]

       dx = end_point[0] - start_point[0]

       dy = end_point[1] - start_point[1]

       if np.abs(dx) < 1e-6 or np.abs(dy) < 1e-6:

           continue

       if dx * dy > 0:

           flexure_count += 0.5

       else:

           flexure_count += 1


   return flexure_count

2023-10-24 19:56
顶部