x
この調査を簡素化するために、単独の2つの値を見てください。最初の反復の後、はと、2番目の反復ではとになりx
ます。これは、意図したものとは逆に、正方形がどんどん小さくなってゼロに近づいていることを意味します。2
1
1
0.5
原点の近くから始めて、遠くに行くにつれて縮んでいくのはどうですか?あなたは初期化することができx = [0, 2];
ますy = [0, 2];
。ここでは2つの要素のみを使用しています。これは、軸に位置合わせされた正方形の場合、必要なのはそれだけだからです。最初の反復は、のように前の正方形のエッジ長によるシフトで開始できx = x + x(2) - x(1);
ます。ただし、正方形も縮小する必要があるため、左隅をエッジの長さのごく一部だけ移動できますx(1) = x(1) + (x(2) - x(1)) * 0.1;
。要約すると、ループは次のようになります
close all, clear all;
x = [0, 2];
y = [0, 2];
hold on;
for k = 0 : 9
edge_len = x(2) - x(1);
x = x + edge_len; % shift
x(1) = x(1) + 0.2 * edge_len; % slightly shift right to shrink
y = y + edge_len;
y(1) = y(1) + 0.2 * edge_len;
fill([x(1), x(1), x(2), x(2)], [y(1), y(2), y(2), y(1)], 'r');
end
に置き換えx(2) - x(1)
たことに注意してくださいedge_len
。次に、色の設定に関する別の問題があります。色ベクトルc = [1, k / 10, k / 10]
を使用して、赤からほぼ白へのグラデーションを作成できます。fill(..., 'r');
その後、あなたの代わりに使用しますfill(..., c);
fill
これにより、ループの外側はありません。これは、質問で表示するコードブロック内のすべての興味深いグラフをカバーするために使用されていました。