【課題9-10】円弧その1(加点)
プロジェクトタイプ | C#コンソールアプリ※ |
---|---|
プロジェクト名 | Prac_9_10 |
ソリューション名 | PET9 |
ターゲットフレームワーク | .NET 6.0 (長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用しない(チェックオン) |
※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!
指定した特徴をもつ 円弧 を描いた画像ファイルを生成するプログラムを作成せよ.
注意
- この設問を解くには先に以下の課題を完了する必要がある.
- この課題は加点課題である.
- 必ずC#で画像を扱う方法の説明を読んでから取り組むこと.
C#で画像を扱う方法
表示するにはここをクリック
C#で画像を扱う方法はいくつかあるが,ここではSkiaSharpという ライブラリを使用する方法を紹介する.
このライブラリをプロジェクトにインストールして以下のように書くと,実行ファイルと同じ場所に
output.png
という赤一色の画像ファイルが作られる(このプログラムを実行するには後述するプロジェクトの設定が必要である).
|
|
SkiaSharpを使用するためには以下の手順を行えばよい.
- 【手順】SkiaSharpのセットアップ手順
以上のセットアップを行い_のプログラムを書き込んで実行すると画像が生成されファイルに保存される. 保存された画像ファイルを確認するには以下の手順を行う.
- 【手順】出力画像の確認方法
詳しい操作方法が分からない場合は,_の動画を参考にするとよい2,3.
表示するにはここをクリック : 閉じる
_をベースとして,_のような 円弧を描いた画像を生成するプログラムを作成せよ. 画像サイズは_の通り縦横512×512ピクセルで固定とする.
この円の以下の特徴は自在に変更できるようにすること.
- 円の中心位置
- 内半径
- 外半径
- 前景色(円の内側の色)
- 背景色(円の外側の色)
- 開始角(単位: ラジアン)
- 値の範囲 :$0$以上$2\pi$未満,かつ開始角<終了角
- 終了角(単位: ラジアン)
- 値の範囲 :$0$以上$2\pi$未満,かつ開始角<終了角
このために_のようにMain()
メソッドの冒頭に以下のような定数を用意すること.
|
|
ヒント
表示するにはここをクリック
- この問題を解くには,各画素の位置と中心位置から,中心角$\theta$を計算する必要がある(_).
- 中心角を求めるには逆三角関数が必要である.C#にはアークサインやアークコサインも用意されているが,Math.Atan2()メソッドという便利なメソッドが用意されている.
- このメソッドは座標
(x, y)
を引数として受け取り,原点を中心とした中心角を$-\pi$~$\pi$のあいだの値で返す.- $0$~$\pi$(0度~180度)は通常の感覚通りの値を返すが,$\frac{3}{2}\pi$~$2\pi$(270度~360度)は$-\pi$~$0$に対応している.
- このメソッドは座標
- 注意として,この設問の場合の中心角とは
(CenterX, CenterY)
を原点とした場合の中心角となるので注意すること .- 画素の位置
(x, y)
そのものをMath.Atan2()
メソッドに適用しても,画像左上隅(0,0)
を原点とした中心角になってしまうので注意すること.
- 画素の位置

表示するにはここをクリック : 閉じる