2011-07-23 110 views
0

大家好,我为我的项目实现了一个三次贝塞尔曲线,我必须将计算出的控制点存储在一个文件中。我必须使用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)  

有人可以帮助我。谢谢。

回答

1

f = open('somefile.dat', 'w+')打开(并创建)一个文件。用f.write()你可以写一个字符串到文件中。在你的情况下,你必须与write调用替代print电话:

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

非常感谢你。这是一个微不足道的问题,但我很愚蠢,我甚至无法做到这一点。 – zingy

0

写入文件:

f = open("fileName", "w+") 
f.write(someDataToWrite) 

查看更多here