es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Trazando una flor simple

Necesito hacer que las elipses rodeen un círculo para formar una flor, me he acercado bastante a la solución, pero no sé cómo arreglarlo, está atravesando el círculo, ¿hay alguna manera de hacer que las elipses sean más cortas y rodeen el círculo?

Este es el código:

pkg load geometry
clf
figure;
t=0:0.01:2<em>pi;
x=10</em>cos(t);
y=3<em>sin(t)/2;
for i=1:12
    hold on;
    q=[x;y];
    e=pi/12</em>i;
    z=[cos(e) -sin(e);sin(e) cos(e)];
    k=z*q;
    r=k(1,:);
    d=k(2,:);
    plot(r,d);
    axis square;
    pause(1);
endfor
hold on;
drawCircle(0,0,1);

Esto es cómo se ve el mío:

Esto es cómo se ve el mío

Esto es cómo se supone que debe verse:

Esto es cómo se supone que debe verse

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para acortar las elipses y hacer que rodeen el círculo, debes cambiar los valores de los parámetros utilizados para definir los arreglos x e y. Actualmente, x se define como x=10*cos(t) e y se define como y=3*sin(t)/2. Para acortar las elipses, puedes disminuir la amplitud de estas funciones senoidales multiplicándolas por un valor constante menor que 1. Por ejemplo, podrías intentar usar x=7*cos(t) e y=2.5*sin(t)/2. Para hacer que las elipses rodeen el círculo, debes rotar la elipse en un ángulo que sea un múltiplo del ángulo entre cada pétalo (que es pi/6 en este caso, ya que hay 12 pétalos). Puedes hacer esto cambiando el valor de e dentro del bucle for. Actualmente está establecido como e=pi/12*i, lo que significa que para cada pétalo i, la elipse se rota en un ángulo de pi/12. Para hacer que las elipses rodeen el círculo, debes cambiar esto a e=pi/6*i, lo que significa que para cada pétalo i, la elipse se rota en un ángulo de pi/6 (que es el doble del ángulo entre cada pétalo).

    Aquí está el código actualizado con estos cambios:

    pkg load geometry
    clf
    figure;
    t=0:0.01:2*pi;
    x=7*cos(t);
    y=2.5*sin(t)/2;
    for i=1:12
        hold on;
        q=[x;y];
        e=pi/6*i; % el ángulo entre los pétalos es pi/6
        z=[cos(e) -sin(e);sin(e) cos(e)];
        k=z*q;
        r=k(1,:);
        d=k(2,:);
        plot(r,d);
        axis square;
        pause(1);
    
    endfor
    hold on;
    drawCircle(0,0,1);
    

    Esto debería producir el resultado deseado, con elipses más cortas que rodean el círculo:

    Imagen actualizada del gráfico de las flores con elipses más cortas

Comments are closed.