forked from ElTinmar/ClassifyMvt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEllipseToDraw.m
42 lines (37 loc) · 1 KB
/
EllipseToDraw.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function [X Y] = EllipseToDraw(xc, yc, a, b, angle, steps)
%# This functions returns points to draw an ellipse
%#
%# @param x X coordinate
%# @param y Y coordinate
%# @param a Semimajor axis
%# @param b Semiminor axis
%# @param angle Angle of the ellipse (in degrees)
%#
error(nargchk(5, 6, nargin));
if nargin<6, steps = 36; end
%
% beta = -angle * (pi / 180);
% sinbeta = sin(beta);
% cosbeta = cos(beta);
%
% alpha = linspace(0, 360, steps)' .* (pi / 180);
% sinalpha = sin(alpha);
% cosalpha = cos(alpha);
%
% X = x + (a * cosalpha * cosbeta - b * sinalpha * sinbeta);
% Y = y + (a * cosalpha * sinbeta + b * sinalpha * cosbeta);
%
% if nargout==1, X = [X Y]; end
phi = linspace(0,2*pi,steps);
cosphi = cos(phi);
sinphi = sin(phi);
xbar = xc;
ybar = yc;
theta = pi*angle/180;
R = [ cos(theta) -sin(theta)
sin(theta) cos(theta)];
xy = [a*cosphi; b*sinphi];
xy = R*xy;
X = xy(1,:) + xbar;
Y = xy(2,:) + ybar;
end