How can I draw a line from center of multiple circles that will intersect all the circles?

I want to multiple circles with same center but different radius. Later on I want add a line from center that will intersect all the cirles. I am attaching a figure to demonstrate how will be my expected output.

 Réponse acceptée

Try this:
t = linspace(0, 2*pi);
r = [1, 2, 3];
xc = 0.5;
yc = 0.1;
xcir = (r(:)*cos(t))' + xc;
ycir = (r(:)*sin(t))' + yc;
figure
hold all
plot(xcir, ycir)
plot([xc, xc+5], [yc, yc], '-r')
hold off
axis equal
text(xc+r, yc*ones(1,numel(r)), ['$\frac{D}h$', compose('$\\frac{%dD}h$', r(2:end))], 'HorizontalAlignment','left', 'VerticalAlignment','top', 'Interpreter','latex', 'FontSize',12)
producing:
How can I draw a line from center of multiple circles that will intersect all the circles - 2019 01 19.png
Experiment to get the result you want.

7 commentaires

This is working well and getting the exact output but unable to point D/h, 2D/h etc as 'compose' giving me error. I am using R2014b.
This is the error:
Undefined function 'compose' for input arguments of type 'char'.
Error in circle_line (line 14)
text(xc+r, yc*ones(1,numel(r)), ['$\frac{D}h$', compose('$\\frac{%dD}h$', r(2:end))], 'HorizontalAlignment','left',
'VerticalAlignment','top', 'Interpreter','latex', 'FontSize',12 )
Change the compose call to sprintfc (that I believe evryone has). It is an undocumented function that creates cell strings, and is otherwise the same as sprintf.
This worked for me just now when I ran it, so it should work for you as well:
text(xc+r, yc*ones(1,numel(r)), ['$\frac{D}h$', sprintfc('$\\frac{%dD}h$', r(2:end))], 'HorizontalAlignment','left', 'VerticalAlignment','top', 'Interpreter','latex', 'FontSize',12)
My apologies for the delay. We are 7 hours behind UTC, so it was night here.
Thank you so much. It works well and perfectly. How can I bold the text? I am using 'fontWeight', 'bold' but its not working. One more thing how can I place D/h, 2D/h, 3D/h .... one line below so that it will not touch the straight line ?
As always, my pleasure.
For LaTeX labels, use the control sequence \bf to invoke boldface type, and \rm to restore the defaults:
text(xc+r, yc*ones(1,numel(r))-0.1, ['$\bf\frac{D}h\rm$', sprintfc('$\\bf\\frac{%dD}h\\rm$', r(2:end))], 'HorizontalAlignment','left', 'VerticalAlignment','top', 'Interpreter','latex', 'FontSize',12)
That worked when I tried it. It also lowers the labels by 0.1, so they are below the straight line.
For more information on LaTeX, see: The Not So Short Introduction to LaTeX2e (link).
Thank you. you are great !!!!!!!!!!!!!!!!!!!!
As always, my pleasure!
Thank you!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by