回答編集履歴

2

描画するだけの話を追記

2021/01/19 01:57

投稿

fana
fana

スコア11985

test CHANGED
@@ -135,3 +135,93 @@
135
135
 
136
136
 
137
137
  ![イメージ説明](45a0d92485f5db7874d1f5833f60a4fa.png)
138
+
139
+
140
+
141
+ ---
142
+
143
+
144
+
145
+ 円形の グラデーションを 描画 することが目的(結果の絵が欲しいだけ)なのであれば,
146
+
147
+ (コメントにも書いたように)単にその話をそのまま実施する,すなわち,明るさを変えながら円を複数回描画するのが最も素直と言える.(結果画像は割愛)
148
+
149
+
150
+
151
+ ```C++
152
+
153
+ const int IMG_SIZE = 240; //画像サイズ(x,yで共用)
154
+
155
+ const int CENTER = IMG_SIZE/2; //てきとーに決めた円の中心(x,yで共用)
156
+
157
+ const int RADIUS = 100; //円の半径
158
+
159
+
160
+
161
+ int main()
162
+
163
+ {
164
+
165
+ //点Aの座標 = (Ax,Ay)
166
+
167
+ const int Ax = CENTER + 45;
168
+
169
+ const int Ay = CENTER + 25;
170
+
171
+
172
+
173
+ //MEMO : 正規化した世界で考えている変数は,変数名末尾にアンダーバー'_'を付与しています.
174
+
175
+ const double Ax_ = double(Ax-CENTER)/RADIUS;
176
+
177
+ const double Ay_ = double(Ay-CENTER)/RADIUS;
178
+
179
+
180
+
181
+ //画像バッファ準備
182
+
183
+ cv::Mat Img( IMG_SIZE, IMG_SIZE, CV_8UC1 ); //IMG_SIZE*IMG_SIZEの画像バッファを用意
184
+
185
+ Img = 100; //画像全体を背景の輝度値で埋めておく.値はてきとー.
186
+
187
+
188
+
189
+ //塗りつぶし円を256回描画する
190
+
191
+ for( int t=0; t<=255; ++t )
192
+
193
+ {
194
+
195
+ double t_ = t / 255.0; //0~1
196
+
197
+ double cx_ = Ax_ * t_; //円の中心
198
+
199
+ double cy_ = Ay_ * t_; //円の中心
200
+
201
+ double r_ = 1.0 - t_; //円の半径
202
+
203
+
204
+
205
+ int cx = CENTER + cvRound( cx_ * RADIUS );
206
+
207
+ int cy = CENTER + cvRound( cy_ * RADIUS );
208
+
209
+ int r = cvRound( r_ * RADIUS );
210
+
211
+ cv::circle( Img, cv::Point(cx,cy), r, cv::Scalar(t), -1 );
212
+
213
+ }
214
+
215
+
216
+
217
+ //結果画像の表示
218
+
219
+ cv::imshow( "Img", Img );
220
+
221
+ if( cv::waitKey() == 's' ){ cv::imwrite( "Result.png", Img ); }
222
+
223
+ return 0;
224
+
225
+ }
226
+
227
+ ```

1

誤変換を修正

2021/01/19 01:57

投稿

fana
fana

スコア11985

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  これを,下図右側の絵のように,たくさんの円盤(緑横線)を位置をずらしながら重ねたような形だと考えれば,
12
12
 
13
- 各円盤のと中心位置は,明るさに対して線形に変化する形だ.
13
+ 各円盤のと中心位置は,明るさに対して線形に変化する形だ.
14
14
 
15
15
  話を簡単にするために中心が原点の単位円で考えれば,明るさをt(0~1)としたとき,明るさtの円盤は
16
16