-1

我在黑白图像中有一些点。我有质心的坐标 x,y,我想顺时针排列它们。为此,我想使用角度。但是我有一个很大的困惑:我假设 atan2 的坐标轴在我照片的中心。然后,我使用其中一个点作为偏移量来使那里的角度为零。

我对此完全感到困惑吗?这有那么难实现吗?我只想得到所有点的角度,角度零是我选择的一个点,然后使用角度以顺时针方向(增加角度方向)对质心进行排序。

我希望我能在你的帮助下解决这个问题!非常感谢,赫克托

4

1 回答 1

2

例子:

% some random 2D points coordinates
xy = rand(10,2);

% zero-centered
xy_ = bsxfun(@minus, xy, mean(xy));

% compute angles
theta = atan2(xy_(:,2), xy_(:,1));

% sort points clockwise
[~,ord] = sort(theta, 'descend');
xy = xy(ord,:);

% plot newly arranged points and labels
scatter(xy(:,1), xy(:,2), 'filled')
text(xy(:,1), xy(:,2), num2str((1:10)'), 'VerticalAlign','bottom')

% show radius lines
cx = zeros(2,size(xy,1));
cy = zeros(2,size(xy,1));
cx(1,:) = mean(xy(:,1)); cx(2,:) = xy(:,1);
cy(1,:) = mean(xy(:,2)); cy(2,:) = xy(:,2);
line(cx, cy)

按角度排序

请注意,atan2在区间内逆时针返回角度:[-pi,pi]. 这实际上也被cart2pol函数使用(查看其源代码)。

于 2013-09-24T09:36:09.360 回答