Draw a circle inside a convex hull with its centre at the origin.
5 views (last 30 days)
Show older comments
I am trying to draw a circle inside a convex hull with its centre at the origin. I have attached the code generating the points and the convex hull. In what way can i generate the incircle with its centre at the origin.
clc;
clear all;
A=[0 0;0 -5; 5 -5; 5 5;0 5;-2 2;-5 -5;5 8;-5 -8;-8 0;8 0]
x_axis=A(:,1)
y_axis=A(:,2)
k=convhull(x_axis,y_axis);
figure;
plot(x_axis(k),y_axis(k),'r-',x_axis,y_axis,'b*');
0 Comments
Accepted Answer
More Answers (1)
KSSV
on 22 Jan 2019
Edited: KSSV
on 22 Jan 2019
clear all;
A=[0 0;0 -5; 5 -5; 5 5;0 5;-2 2;-5 -5;5 8;-5 -8;-8 0;8 0]
x_axis=A(:,1)
y_axis=A(:,2)
k=convhull(x_axis,y_axis);
figure;
hold on
plot(x_axis(k),y_axis(k),'r-',x_axis,y_axis,'b*');
C = [mean(x_axis(k)) mean(y_axis(k))] ;
plot(C(1),C(2),'*r')
% Get diatnces
d1 = pdist2(C,[x_axis(k) y_axis(k)]) ;
th = linspace(0,2*pi,1000) ;
x = C(1)+min(d1)*cos(th) ;
y = C(2)+min(d1)*sin(th) ;
idx = inpolygon(x', y',x_axis(k), y_axis(k)) ;
count = 0 ;
while nnz(idx)~=1000
count = count+1 ;
R = min(d1)-0.5 ;
idx = inpolygon(x', y',x_axis(k), y_axis(k)) ;
x = C(1)+R*cos(th) ;
y = C(2)+R*sin(th) ;
end
plot(x,y)
4 Comments
See Also
Categories
Find more on Computational Geometry in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!