回答編集履歴
2
描画するだけの話を追記
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
誤変換を修正
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
これを,下図右側の絵のように,たくさんの円盤(緑横線)を位置をずらしながら重ねたような形だと考えれば,
|
12
12
|
|
13
|
-
各円盤の
|
13
|
+
各円盤の径と中心位置は,明るさに対して線形に変化する形だ.
|
14
14
|
|
15
15
|
話を簡単にするために中心が原点の単位円で考えれば,明るさをt(0~1)としたとき,明るさtの円盤は
|
16
16
|
|