Order Points for plotting

조회 수: 5 (최근 30일)
Ahmed Abdulla
Ahmed Abdulla 2022년 5월 24일
댓글: Ahmed Abdulla 2022년 5월 24일
I have the coordinates of the above two shapes imported from a CAD software, however when I plot the shape the points are not in order. Is there a method to order the coordinates so that points on the perimeter of the shape that are side by side are next to each other in the matrix.
If there is any mathematical method that would help me, I am willing to understand it and code it myself. Thank you
  댓글 수: 5
Walter Roberson
Walter Roberson 2022년 5월 24일
use a different shrink factor?
Ahmed Abdulla
Ahmed Abdulla 2022년 5월 24일
@Walter Roberson Here I am using a shrink factor of 1 which is the highest I can go :(

댓글을 달려면 로그인하십시오.

답변 (1개)

KSSV
KSSV 2022년 5월 24일
load('A.mat') ;
x = A(:,1) ; y = A(:,2) ;
n = length(x) ;
iwant = zeros(n,2) ;
i = 1 ;
iwant(i,:) = [x(i) y(i)] ;
x(i) = [] ; y(i) = [] ;
while ~isempty(x)
i = i+1;
idx = knnsearch([x y],iwant(i-1,:));
iwant(i,:) = [x(idx) y(idx)] ;
x(idx) = [] ; y(idx)= [];
end
iwant(end+1,:) = iwant(1,:) ;
plot(iwant(:,1),iwant(:,2))
  댓글 수: 3
KSSV
KSSV 2022년 5월 24일
편집: KSSV 2022년 5월 24일
Lets randomize the points and run the code.
load('A.mat') ;
x = A(:,1) ; y = A(:,2) ;
n = length(x) ;
idx = randperm(n,n) ;
x = x(idx) ; y = y(idx) ;
iwant = zeros(n,2) ;
i = 1 ;
iwant(i,:) = [x(i) y(i)] ;
x(i) = [] ; y(i) = [] ;
while ~isempty(x)
i = i+1;
idx = knnsearch([x y],iwant(i-1,:));
iwant(i,:) = [x(idx) y(idx)] ;
x(idx) = [] ; y(idx)= [];
end
iwant(end+1,:) = iwant(1,:) ;
plot(iwant(:,1),iwant(:,2))
Ahmed Abdulla
Ahmed Abdulla 2022년 5월 24일
Thank you @KSSV for your efforts I really appreciate it. Unfortunately this doesnt work every time and I am trying to make a generalised function that will work for any shape and at all times

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by