2012-10-18 32 views
0

我想用Scilab绘制siemens star,我无法完成它。西门子明星与scilab

任何想法为什么下面的代码不起作用?

t = 0:.001:2*%pi; 
xc = 4; 
yc= 4; 
r =2 ; 
n = 1:length(t)/32 : length(t); 
v =0:.001:r; 
for k =1:length(n) 
    if modulo(k,2) ==0 then 
      for a=1:length(t) 
      for b =1:length(v) 
       x(a) = xc+ (r-v(b)) *cos(t(a)); 
       y(a) = yc+ (r-v(b))* sin(t(a)); 
       set(gca(),"auto_clear","off") 
       plot(x,y,"black"); 
      end; 
     end; 
    else 
    x=xc; 
    y=yc; 
end; 
end; 

在此先感谢您的帮助。

+0

你需要更具体。什么“不起作用”? – FakeDIY

+0

它只是不运行,我得到一个空的数字 – Engine

+0

如果您在中间停止程序几次并运行plot(x,y,“black”),会发生什么? –

回答

1

感谢xenoclast对你的建议,但这里是我的代码,我觉得这是很短:

plot2d(0,0,-1,"030"," ",[-2,-2,2,2]); 
n=16 // number of bands 
for i=1:n 
    xfarc(-1.5,1.5,3,3,2*i*(180/n)*64,64*(180/n)); 
end 
+1

是的xfarc肯定是一个更有效的方法。我一直在看这个问题,没有人回答,所以我想我会看看发生了什么事情:) – xenoclast

1

我知道你已经解决了这个不同的方式,但值得注意的是,plot调用是非常昂贵的,你试图在这三个嵌套循环内调用它4e8次。

如果您减少循环的大小,它工作正常。仍然需要一个可怕的很长一段时间了,是绘画固体块更有效,一系列线:)