Archivo:Black and white wiggler.gif

Black_and_white_wiggler.gif(500 × 500 píxeles; tamaño de archivo: 2,85 MB; tipo MIME: image/gif, bucleado, 200 frames, 4,0s)


Wikimedia Commons Logo Este archivo es de Wikimedia Commons y puede usarse en otros proyectos. La descripción en su página de descripción del archivo se muestra debajo.

Resumen

Descripción
English: Wiggling striped cone.
Deutsch: Schwingender gestreifter Kegel.
Română: Con vărgat oscilant.
Fecha
Fuente Trabajo propio
Autor Jahobr
GIF desarrollo
InfoField
 
Este diagrama fue creado con MATLAB por Jahobr
Código fuente
InfoField

MATLAB code

function [] = Black_and_white_wiggler()
% source code for drawing the animation
%
% 2017-04-24 Jahobr

fps = 50;
nFrames = 200;

nBands = 30; % black + white
mergeCircles = 8; % circles merged to create a band
nCircles = nBands*mergeCircles; % individual circle patches

[pathstr,fname] = fileparts(which(mfilename)); % save files under the same name and at file location

k = linspace(0,2*pi,nFrames+1);
k = k(1:end-1); % 0 and 2pi are the same image

xyLim = [-1.5 1.5];

figHandle = figure(15124455);
clf
axesHandle = axes;
hold(axesHandle,'on')
set(figHandle, 'Units','pixel');
set(figHandle, 'position',[1 1 1000 1000]); % big start image for antialiasing later [x y width hight]
set(axesHandle,'position',[-0.05 -0.05 1.1 1.1]); % stetch axis bigger as figure, easy way to get rid of ticks [x y width hight]
set(figHandle,'GraphicsSmoothing','on') % requires at least version 2014b
xlim(xyLim); ylim(xyLim); % set axis limits
axis equal; drawnow;

%% Radii of the circles, big -> small
radii = linspace(1.2,0.25,nCircles).^4; % 1.2^4 = 2.1 covers the whole image ... 0.25^4 = 0.004 is still visible;
% radii = logspace(log10(2),log10(0.003),40);

%% lag of each circle, big -> small
phaseShift = linspace(1.2,0.2,nCircles).^4;
% phaseShift = logspace(log10(0.5),log10(0.0005),nCircles);
% phaseShift = linspace(1.,0.0000000001,nCircles);

%% scale the movement bigger circles are slowed down, big -> small
movementScale = (1-cos(linspace(0,pi,nCircles)))*0.5;
% movementScale = ones(1,nCircles)
% movementScale = linspace(0.3,1,nCircles);
% movementScale = nthroot(linspace(0.3^3,1,nCircles),3);

angleOffPoints = ((2*pi) : -pi/200 : 0);

xTrajectory = zeros(1,nFrames); % allocate
yTrajectory = zeros(1,nFrames); % allocate

for iFrame = 1:nFrames
    cla(axesHandle) % fresh frame
    col = [0 0 0]; % start black
    
    for iCirc = 1:nCircles % draw stack of circles big to small
        
        nPatch = 1+mergeCircles-rem(iCirc,mergeCircles);
        
        % draw a figure-8
        xc=sin(   phaseShift(iCirc)+k(iFrame)) *movementScale(iCirc);
        yc=sin(2*(phaseShift(iCirc)+k(iFrame)))*movementScale(iCirc);
        
%         % draw a more complex movement
%         xc=sin(2*(phaseShift(iCirc)+k(iFrame)))*movementScale(iCirc);
%         yc=cos(3*(phaseShift(iCirc)+k(iFrame)))*movementScale(iCirc);

        [X(nPatch,:),Y(nPatch,:)] = pol2cart(angleOffPoints,radii(iCirc));

        X(nPatch,:) = X(nPatch,:)+xc; % center offset
        Y(nPatch,:) = Y(nPatch,:)+yc; % center offset        


        if nPatch == mergeCircles
            
            MergeX = X(nPatch,:);
            MergeY = Y(nPatch,:);
            
            for iMerge = 2:mergeCircles % draw stack of circles big to small
                [MergeX,MergeY] = polybool('union', MergeX,MergeY,...
                    X(iMerge,:),Y(iMerge,:));
            end
            patch(MergeX,MergeY,col,'EdgeColor',1-col);
            
            col = 1-col; % flip black and white
        end
    end
    
    xTrajectory(iFrame) = xc; % store trajectory of smallest circle
    yTrajectory(iFrame) = yc; % store trajectory of smallest circle
    
    %% save animation
    xlim(xyLim); ylim(xyLim); % set axis limits
    drawnow % update figure window and execute pending callbacks
    
    f = getframe(figHandle);
    f.cdata = imresize(f.cdata,0.5); % the size reduction: adds antialiasing, edge line thinner
    if iFrame == 1 % create colormap
        map = gray(8); % create own color map %
        im = rgb2ind(f.cdata,map,'nodither'); %
        im(1,1,1,nFrames) = 0; % allocate
    end
    
    imtemp = rgb2ind(f.cdata,map,'nodither');
    im(:,:,1,iFrame) = imtemp;

end
imwrite(im,map,fullfile(pathstr, [fname '.gif']),'DelayTime',1/fps,'LoopCount',inf) % save gif
disp([fname '.gif  has ' num2str(numel(im)/10^6 ,4) ' Megapixels']) % Category:Animated GIF files exceeding the 50 MP limit


%% Helper Figures
% check trajectory of the tip
figure(15634469); clf; hold on
plot(xTrajectory,yTrajectory)
title('trajectory')

figure(13234469); clf; hold on
subplot(1,3,1)
plot(radii)
title('radii')
subplot(1,3,2)
plot(phaseShift)
title('phase shift')
subplot(1,3,3)
plot(movementScale)
title('movement scale')

Licencia

Yo, el titular de los derechos de autor de esta obra, la publico en los términos de la siguiente licencia:
Creative Commons CC-Zero Este archivo está disponible bajo la licencia Creative Commons Dedicación de Dominio Público CC0 1.0 Universal.
La persona que ha asociado una obra a este documento lo dedica al dominio público mediante la cesión mundial de sus derechos bajo la ley de derechos de autor y todos los derechos legales adyacentes propios de dicha, en el ámbito permitido por ley. Puedes copiar, modificar, distribuir y reproducir el trabajo, incluso con objetivos comerciales, sin pedir aprobación del autor.

Leyendas

Añade una explicación corta acerca de lo que representa este archivo

Elementos representados en este archivo

representa a

65890b7a6eb4ac450802f1b06ecddd74f424e809

2 993 406 byte

4,000000000000003 segundo

500 píxel

500 píxel

Historial del archivo

Haz clic sobre una fecha y hora para ver el archivo tal como apareció en ese momento.

Fecha y horaMiniaturaDimensionesUsuarioComentario
actual22:12 12 sep 2017Miniatura de la versión del 22:12 12 sep 2017500 × 500 (2,85 MB)JahobrGraphicsSmoothing with matlab version 2017a, 8 colores, 500x500 px
09:25 26 abr 2017Miniatura de la versión del 09:25 26 abr 2017450 × 450 (1,99 MB)Jahobrwhite truly white, bigger
07:43 28 ene 2017Miniatura de la versión del 07:43 28 ene 2017400 × 400 (1,71 MB)Jahobr{{Information |Description ={{en|1=Wiggling striped cone.}} {{de|1=Schwingender gestreifter Kegel.}} |Source ={{own}} |Author =Jahobr |Date =2017-01-28 |Permission = |other_versions = }} {{Created with M...

Las siguientes páginas usan este archivo:

Uso global del archivo

Las wikis siguientes utilizan este archivo: