大家好, 我正在为我的项目实现一个三次贝塞尔曲线,我必须将计算出的控制点存储在一个文件中。我必须使用gnuplot中的输出文件来查看曲线。在这里的一篇帖子之后,我理解了如何实现,但我对如何将输出转换为文件感到困惑。当我尝试它时,只需写入它计算的最后一个点的值。因为有一个循环所以我应该在生成它时立即将值写入文件中。以下是代码:
import math
points = [(0,0), (5,0), (5,5), (10,5)]
n = 20
for i in range(n) :
u = i / float(n)
x = math.pow(1-u,3) * points[0][0] + 3 * u * math.pow(1-u,2) * points[1][0] \
+ 3 * (1-u) * math.pow(u,2) * points[2][0] + math.pow(u,3) * points[3][0]
y = math.pow(1-u,3) * points[0][1] + 3 * u * math.pow(1-u,2) * points[1][1] \
+ 3 * (1-u) * math.pow(u,2) * points[2][1] + math.pow(u,3) * points[3][1]
print "(x,y)=", (x, y)
是的,请有人帮助我。谢谢。
答案 0 :(得分:1)
f = open('somefile.dat', 'w+')
打开(并创建)一个文件。使用f.write()
,您可以将字符串写入文件。在您的情况下,您必须使用print
来电替换write
来电:
import math
points = [(0,0), (5,0), (5,5), (10,5)]
n = 20
f = open('somefile.dat', 'w+')
for i in range(n) :
u = i / float(n)
x = math.pow(1-u,3) * points[0][0] + 3 * u * math.pow(1-u,2) * points[1][0] \
+ 3 * (1-u) * math.pow(u,2) * points[2][0] + math.pow(u,3) * points[3][0]
y = math.pow(1-u,3) * points[0][1] + 3 * u * math.pow(1-u,2) * points[1][1] \
+ 3 * (1-u) * math.pow(u,2) * points[2][1] + math.pow(u,3) * points[3][1]
f.write("(x,y)=(%f, %f)"% (x, y))
答案 1 :(得分:0)