Python 如何在csv文件中打印Bezier曲线的t?

Python 如何在csv文件中打印Bezier曲线的t?,python,numpy,csv,bezier,Python,Numpy,Csv,Bezier,这是Bezier曲线Python代码,我已经打印了Bezier曲线的坐标X和Y。这意味着曲线上的点如下表所示,但我无法打印t。需要帮忙吗 X Y t ============== 我怎么能打印t 代码如下: import numpy as np import scipy.special import matplotlib.pyplot as plt import csv def calc_bezier_path(control_points, n_points=100):

这是
Bezier曲线Python代码
,我已经打印了
Bezier曲线
的坐标
X
Y
。这意味着曲线上的点如下表所示,但我无法打印
t
。需要帮忙吗

X    Y     t
============== 
我怎么能打印t

代码如下:

import numpy as np
import scipy.special
import matplotlib.pyplot as plt
import csv
def calc_bezier_path(control_points, n_points=100):
    """
    Compute bezier path (trajectory) given control points.
    :param control_points: (numpy array)
    :param n_points: (int) number of points in the trajectory
    :return: (numpy array)
    """
    traj = []
    for t in np.linspace(0, 1, n_points):
        traj.append(bezier(t, control_points))

    return np.array(traj)


def bernstein_poly(n, i, t):
    """
    Bernstein polynom.
    :param n: (int) polynom degree
    :param i: (int)
    :param t: (float)
    :return: (float)
    """
    return scipy.special.comb(n, i) * t ** i * (1 - t) ** (n - i)


def bezier(t, control_points):
    """
    Return one point on the bezier curve.
    :param t: (float) number in [0, 1]
    :param control_points: (numpy array)
    :return: (numpy array) Coordinates of the point
    """
    n = len(control_points) - 1
    return np.sum([bernstein_poly(n, i, t) * control_points[i] for i in range(n + 1)], axis=0)


visx, visy = [1,2,10,15,20,25,21], [0,5,1,4,2,3,3]
vis = np.column_stack((visx,visy))
print(vis[0])
path_x, path_y = np.array([]),np.array([])
if len(vis) > 2:
    current_control = vis[0]
    for x in range(len(vis)-2):
        if x != (len(vis)-3):
            mid_control = [(vis[x+1,0]+vis[x+2,0])/2, (vis[x+1,1]+vis[x+2,1])/2]
            plt.annotate(f"M{x}", mid_control)
            bezier_line = calc_bezier_path(np.array([current_control,vis[x+1], mid_control]))
            path_x = np.append(path_x, bezier_line.T[0])
            path_y = np.append(path_y, bezier_line.T[1])
            current_control = mid_control
        else:
            bezier_line = calc_bezier_path(np.array([current_control, vis[x+1], vis[x+2]]))
            path_x = np.append(path_x, bezier_line.T[0])
            path_y = np.append(path_y, bezier_line.T[1])
else:
    path_x, path_y = visx, visy
with open('my_csv.csv','w',newline='') as f:
    fieldnames = ['visx','visy','t']
    thewriter = csv.DictWriter(f,fieldnames=fieldnames)
    thewriter.writeheader()
    for jjj in range(len(path_x)):
        thewriter.writerow({'visx':path_x[jjj],'visy':path_y[jjj]})
plt.plot(path_x, path_y)
plt.plot(visx, visy, "--o")
for xy in range(len(vis)):
    plt.annotate(f"P{xy}", vis[xy])
plt.show()

你说的x,y,t是什么意思?它们是曲线上的点吗?@DrBwts Yes亲爱的
x
存储在
path\ux
中,
y
存储在
path\uy
中,不确定
t
。如果您不确定如何用Python编写文本文件,请看一看,如果您只想为bezier曲线打印一个t/x/y表格,那么这是一个不可接受的代码量。为什么所有的numpy/scipy代码<对于范围(0100)中的i:t=i/100,然后只打印
f{t}\t{x}\t{y}
,其中
t
本身,
x
作为
compute(t,xcoords)
y
作为
compute(t,ycoords)
其中
compute
是基本的贝塞尔计算功能。@Mike'Pomax'Kamermans这不是我的代码,亲爱的。我已经把这个代码,我把我的一些行。