缩放旋转的椭圆

时间:2016-03-10 13:39:23

标签: matlab scale ellipse

我有一个函数可以绘制一个椭圆,该椭圆相对于一些主轴(vx)和短轴(vy)刻度顺时针旋转角度a。我想调整它,以便未旋转的椭圆满足等式:

(x / vx)^2 + (y / vy)^2 = s

对于传入的某些值。

function [] = plotellipse(cx, cy, vx, vy, s, a)
    t = linspace(0, 2 * pi);
    x = cx + vx * cos(t) * cos(-a) - vy * sin(t) * sin(-a);
    y =  cy + vy * sin(t) * cos(-a) + vx * cos(t) * sin(-a);
    plot(x,y,'y-');

1 个答案:

答案 0 :(得分:1)

正确实现的椭圆的常用公式是

\left(\frac{x}{vx}\right)^2+\left(\frac{y}{vy}\right)^2=1

要将所需的等式缩小为相同的形式,请按s

除以

\left(\frac{x}{vx\sqrt{s}}\right)^2+\left(\frac{y}{vy\sqrt{s}}\right)^2=1

现在xy成为

vxs = vx / sqrt(s)
vys = vy / sqrt(s)
x = cx + vxs * cos(t) * cos(-a) - vys * sin(t) * sin(-a);
y =  cy + vys * sin(t) * cos(-a) + vxs * cos(t) * sin(-a);
相关问题