2012-05-01 3 views
0

내가 원의 밀집 계층을 생성하기 위해 점을 상자처럼 내 중심점을 생성하여 가까운 포장 레이어를 만든 다음 전단하려고 해요의 밀집 레이어를 만들 more info can be found herematlab에 .. 원

하지만 몇 가지 어려움을 겪고있어 .. 내 코드는 지금까지입니다

%% Trying out the shear function 
rad=2; n=3; 
[X,Y] = meshgrid(0 : rad*2 : rad*(n-1)*2 , ... 
      0 : sqrt(2*(2*rad)^2)/2 : sqrt(2*(2*rad)^2)/2*(n-1)); 
xyBox = [reshape(X,1,numel(X)) ; reshape(Y,1,numel(Y))]; 
Sh = @(m) [1 m; 0 1];  % horizontal shear - slope is qual to 1/m 
slope = sqrt(3); 

shearedCoordinates = Sh(1/slope) * xyBox; 
figure; plot(xyBox(1,:),xyBox(2,:),'k.'); 
for i= 1:(numel(shearedCoordinates)/2) 
    hold on; 
    circle(shearedCoordinates(1,i),shearedCoordinates(2,i),rad) 
    plot(shearedCoordinates(1,i),shearedCoordinates(2,i),'bx') 
    hold off; 
end 
axis equal 

sorta packed circles

정말 쉿 뒤에 수학을 이해하지 마십시오,하지만이 빌어 먹을 좋은 일을 볼 단지 수 twisti (전단) 점.

원 기능이

function circle(x,y,r) 
    angle=0:0.01:2*pi; 
    xp=r*cos(angle); 
    yp=r*sin(angle); 
    plot(x+xp,y+yp,'r'); 
end 

* 해결 방법 *

입니다 ... 나는 적당한 장소를 제공해야 제곱근 3의 기울기를 계산하지만, 내 Y 거리에 문제가 뢰 디게 보인다
%% Trying out the shear function 
rad=2; n=3; 
[X,Y] = meshgrid(0 : rad*2 : rad*(n-1)*2 , ... 
    0 : sqrt(3)*rad : sqrt(3)*rad*(n-1)); 
xyBox = [reshape(X,1,numel(X)) ; reshape(Y,1,numel(Y))]; 
Sh = @(m) [1 m; 0 1];  % horizontal shear - slope is qual to 1/m 
slope = sqrt(3); 

shearedCoordinates = Sh(1/slope) * xyBox; 
figure; plot(xyBox(1,:),xyBox(2,:),'k.'); 
for i= 1:(numel(shearedCoordinates)/2) 
    hold on; 
    circle(shearedCoordinates(1,i),shearedCoordinates(2,i),rad) 
    plot(shearedCoordinates(1,i),shearedCoordinates(2,i),'bx') 
    hold off; 
end 
axis equal 

답변

0

나의 실수는 (내가 볼 수있는 첫 번째 것만해도) 서클 센터 라인의 y- 간격에 있습니다. 서클 센터를 배치하기 위해

0 : sqrt(2*(2*rad)^2)/2 : sqrt(2*(2*rad)^2)/2*(n-1) 

이라는 표현이 있습니다. 내가 실수 (전적으로 가능) 단위의 높이 삼각형이 sqrt(3)/2과를했습니다 않는

0 : rad*sqrt(3)/2 : sqrt(2*(2*rad)^2)/2*(n-1) 

가가 에게서는 : 나는 당신을 줄 것이다 rad*sqrt(3)/2 수직 보폭 (또는 단계 값)해야한다고 생각 당신의 y- 간격이되어야합니다.

+0

높이가 틀린 것이 맞습니다. 그것은 sqrt (3) * rad이어야합니다. 어제 너무 많은 숫자를보고있었습니다. – Norfeldt

+0

방금 ​​최종 해결책을 추가했습니다 – Norfeldt

+0

측 정삼각형의 고도가'a * sqrt (3)/2'이 아니라는 것을 여러분의 의견에 남겨 두었습니다.'a * sqrt (3)' . –

0

나는 코드를 갈 기회가 없었어요 (당신이 그것을 유용하게 찾을 경우 투표를하는 것을 잊지 마세요) 내가 n Matlab은 아직하지만 게시 한 그림을보고 전단력이 작용한다는 것에 동의합니다. 그러나 사전 전단계 센터를 사용해도 그 원은 겹칠 것입니다. 이게 네가 말하는거야?

+0

전단이 잘 작동합니다. pre/shear라고 말하면 나는 검은 센터를 의미한다고 생각합니다. 검은 센터에서 그려지면 그렇습니다. – Norfeldt

+0

사실, 두 번째로 보았을 때 우리는 전단에 대해 틀 렸습니다. 포함 된 링크의 첫 번째 그림을보고 전단을 취소하거나 다시 풀기 위해 다시 회전 시키려고하면 y를 따라 중심점 사이의 거리가 증가해야합니다. 대신 당신의 그림에서 중심은 x를 따라 번역되었습니다. 나는 처음 거리를 바로 잡은 다음이 방법으로 깎은 경우에도 포장 효과를 얻지 못할 것이라고 생각합니다. – MyCarta

+0

여기에있는 전위 운동 단락의 슬립에있는 빨간색 구체로 그림을 확인하십시오 : http://www.doitpoms.ac.uk/tlplib/dislocations/printall.php – MyCarta