2012-10-18 65 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次。

如果您減少循環的大小,它工作正常。仍然需要一個可怕的很長一段時間了,是繪畫固體塊更有效,一系列線:)