Filter löschen
Filter löschen

Draw a circle inside a convex hull with its centre at the origin.

4 Ansichten (letzte 30 Tage)
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*');

Akzeptierte Antwort

Matt J
Matt J am 23 Jan. 2019
Bearbeitet: Matt J am 23 Jan. 2019
Use vert2lcon (Download) to find the inequality constraint matrices representing the polygon
[Aineq,bineq]=vert2lcon(A);
The bineq are actually distances of each of the sides of the polygon from the origin, so the radius of the largest inscribed circle should be
maxRadius = min(bineq);

Weitere Antworten (1)

KSSV
KSSV am 22 Jan. 2019
Bearbeitet: KSSV am 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 Kommentare
Hirak Basumatary
Hirak Basumatary am 22 Jan. 2019
@kssv: Sir, i think what you have done is if the circle goes outside the convex hull, you have decreased the minimum distance "min(dl)" by 0.5. But, i was trying to solve with incircle touching the convex hull and without decreasing any min length. I am looking at an answer by John D Errico. Here is the link and trying to get the centre of the inscribed circle at the origin. Here's what i have been successful and still trying. actual.jpg
Hirak Basumatary
Hirak Basumatary am 22 Jan. 2019
Bearbeitet: Hirak Basumatary am 22 Jan. 2019
Trying to get a circle inscribed like this. With its centre at the origin. ( drawing edited in paint, not matlab)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Bounding Regions finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by