0

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;

よろしくお願いします。

4

2 に答える 2

1

これを別の方法で解決したことは知っていますが、このplot呼び出しは非常に高額であり、ネストされたループの3つのレベル内で4e8回呼び出そうとしていることに注意してください。

ループのサイズを小さくすると、正常に機能します。それでも非常に長い時間がかかります。そうです、実線のブロックを描画する方が、一連の線よりも効率的です:)

于 2012-12-05T19:01:28.937 に答える
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
于 2012-12-06T08:57:41.827 に答える