※本抽選は厳正に行われています。(+90kg固定)
% ステップ1: 文字列入力
segments = cell(1, 6);
segments{1} = '+50kg';
segments{2} = '+60kg';
segments{3} = '+70kg';
segments{4} = '+80kg';
segments{5} = '+90kg';
segments{6} = '+100kg';
% セグメントごとの固定色
colors = lines(6); % MATLABの既定のカラーマップから色を取得
% ステップ2: ルーレットの作成と表示
theta = linspace(0, 2*pi, 7); % 6つのセグメント + 1 (閉じるため)
x = cos(theta);
y = sin(theta);
figure;
fill(x, y, 'w'); % ルーレットの背景を白にする
hold on;
% セグメントの描画と文字列の表示
for k = 1:6
fill([0 x(k) x(k+1)], [0 y(k) y(k+1)], colors(k, :));
text(0.5*(x(k)+x(k+1)), 0.5*(y(k)+y(k+1)), segments{k}, ...
'HorizontalAlignment', 'center', 'FontSize', 16);
end
axis equal off;
% ステップ3: ルーレットの回転と停止位置の制御
stop_position = 4;
% ルーレットの回転アニメーション
for angle = linspace(0, 2*pi*5, 100) % 5回転のアニメーション
rotateRoulette(angle, segments, colors);
pause(0.05);
end
% 最終位置に回転
final_angle = pi/3 * (stop_position-1); % 指定位置を上に
rotateRoulette(final_angle, segments, colors);
function rotateRoulette(angle, segments, colors)
% 回転行列を適用してルーレットを描画
clf;
theta = linspace(0, 2*pi, 7);
x = cos(theta + angle);
y = sin(theta + angle);
fill(x, y, 'w');
hold on;
for k = 1:6
fill([0 x(k) x(k+1)], [0 y(k) y(k+1)], colors(k, :));
text(0.5*(x(k)+x(k+1)), 0.5*(y(k)+y(k+1)), segments{k}, ...
'HorizontalAlignment', 'center', 'FontSize', 16);
end
axis equal off;
end
コメント