Я пытаюсь создать плотноупакованную слой, создавая свои центральные точки как поле, а затем разрежет точку для того, чтобы создать плотноупакованную слой кругов .. 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
не понимаю математику позади Sh, но только можно увидеть, что он делает чертовски хорошую работу twisti ng (срезающие) точки. Я вычислил наклон квадратного корня 3 должны дать правильное место, но это выглядит Lige есть что-то не так с моими у расстояний ...
функция круга
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
* РЕШЕНИЕ *
%% 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
(не забывайте голосовать, если вы нашли его полезным)
Вы правы, что высота неправильная. Это должно было быть sqrt (3) * rad. Вчера смотрел слишком много цифр. – Norfeldt
Просто добавлено окончательное решение – Norfeldt
Я утверждаю, что высота равностороннего треугольника стороны 'a' есть' a * sqrt (3)/2' нет, как у вас в вашем комментарии, 'a * sqrt (3)' , –