0

ボックスのような中心点を生成して密集したレイヤーを作成しようとしています。次に、円の密集したレイヤーを作成するためにポイントをせん断します。 詳細については、ここを参照してください。

しかし、私はいくつかの問題を抱えています..これまでの私のコードは

%% 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 の背後にある数学をよく理解していませんが、点をねじる (せん断する) という非常に優れた仕事をしていることがわかります。平方根 3 の勾配を計算すると正しい場所が得られるはずですが、y 距離に何か問題があるように見えます...

円関数は

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

(役に立ったと思ったら、忘れずに投票してください)

4

2 に答える 2

0

私の考えでは、あなたの間違い(またはおそらく私が見ることができる最初の間違い)は、円の中心の線のy間隔にあります。あなたは表現を持っています

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

円の中心を配置するため。垂直ストライド(またはステップ値)は、次のようrad*sqrt(3)/2になるはずだと思います。

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

私が(完全に可能である)間違いをしない限り、単位正三角形の高さはでsqrt(3)/2あり、それはあなたのy間隔であるはずです。

于 2012-05-01T14:23:15.467 に答える
0

私はまだMatlabでコードを調べる機会がありませんでしたが、あなたが投稿した図を見るだけで、せん断が機能していることに同意します. ただし、せん断前の中心を使用した場合でも、これらの円は重なります。ということですか?

于 2012-05-01T14:17:29.377 に答える