2012-10-18 2 views
0

Scilab을 사용하여 siemens star을 그렸습니다. 끝내지 못했습니다.siemens star with 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 번 호출하려고한다는 점에 유의해야합니다.

루프의 크기를 줄이면 올바르게 작동합니다. 여전히 끔찍한 시간이 오래 걸립니다, 그리고 네 고체 블록을 그리기는 일련의 선 것이 더 효율적입니다 :)

관련 문제