Draw a gradient circle within a circle
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
I want to code a gradient circle within a circle like shown in the diagram. Any help will be appreciated. 

採用された回答
One way might be to use a patch with vertex interpolation, as in this example.
EDIT:
Here's how you might apply that to a circle:
t=linspace(0,360,500); t(end)=[];
x=cosd(t);
y=sind(t);
c=cosd(t);
patch(x,y,c); colormap(gray); axis equal; caxis([-0.7970 ,0.6373])

15 件のコメント
Sajjad Ahmad Khan
2021 年 6 月 19 日
I haven't found answer from the shared link
Matt J
2021 年 6 月 19 日
You should see an example there with a gradient transition across triangles, similar to what you are trying to do with circles.

Scott MacKenzie
2021 年 6 月 19 日
編集済み: Scott MacKenzie
2021 年 6 月 19 日
@Matt J I tried -- without success -- to extend this example to circles. I think it's tricky because a circle doesn't have faces and vertices. When I tried to concoct a circle as a many-sided polygon, the color interpolation seemed to go a bit wonky:

@Scott MacKenzie See my edited answer
Scott MacKenzie
2021 年 6 月 19 日
@Matt JWow, excellent. Thanks for this
Hi Matt, I want to add the gradient circle that you plotted inside the white circle in the following code. How can I do that?
% First create the image.
imageSizeX = 256;
imageSizeY = 256;
image=zeros(imageSizeX,imageSizeY);
[columnsInImage rowsInImage] = meshgrid(1:imageSizeX, 1:imageSizeY);
% Next create the circle in the image.
centerX = 128;
centerY = 128;
radius = 100;
circlePixels = (rowsInImage - centerY).^2 ...
+ (columnsInImage - centerX).^2 <= radius.^2;
% circlePixels is a 2D "logical" array.
% Now, display it.
image(circlePixels)=256;
imshow(image, [])

Doing this with images is much easier than with plots...
gradientCircle=columnsInImage.*circlePixels;
gradientCircle(circlePixels)=rescale(gradientCircle(circlePixels),0,255);
imshow(gradientCircle, [])

Sajjad Ahmad Khan
2021 年 6 月 19 日
I actually want an image of zeros of some height and width in which I have two circles, the outer circle should be white and inner most circle should have a gradient (0 to 255). See the first image that I had posted in a question. Thanks
Well, it's very easy to add a circle around the first.
halo=imdilate(circlePixels,strel('disk',10)) & ~circlePixels;
gradientCircle(halo)=255;
imshow(gradientCircle, []);shg

Sajjad Ahmad Khan
2021 年 6 月 19 日
@Matt J Thanks for your reply. This function is really helpful but I want to code such that I could change the dimensions of image and inner circles. I want some like this shown image. How can I modify my above mentioned code to get something like this image? Thanks

Matt J
2021 年 6 月 19 日
Well, the radius is a parameter you do control, isn't it? You set it to 100 in your original code, but you could easily change it to something else.
Sajjad Ahmad Khan
2021 年 6 月 20 日
@Matt J yes I can control the radius of outer circle but how to control the radius of inner circle that you coded? Thank you!
Matt J
2021 年 6 月 20 日
The inner circle is the one that you coded. The outer circle is coded by choosing the strel radius in strel('disk',10)
Sajjad Ahmad Khan
2021 年 6 月 20 日
@Matt J Thank you so much. I appreciate your help!
Matt J
2021 年 6 月 20 日
You're quite welcome, but please Accept-click the answer if you consider the question resolved.
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Geometric Transformation and Image Registration についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
