Файл: GoldenSpiralЛогарифмический цвет in.gif


  • Файл
  • История файлов
  • Использование файла
  • Глобальное использование файлов

GoldenSpiralLogarithmic_color_in.gif (450 × 450 пикселов, размер файла: 1,51 МБ, MIME - тип: изображение / GIF , петельный, 245 кадров, 4,9 с)

Резюме

  • svg

  • гифка в

  • гифка из

  • webm

  • svg

  • Matlab Logo.png Эта схема была создана с MATLAB по Jahobr :

    Matlab

    функция GoldenSpiralLogarithmic () % исходный код для рисования анимации%% 2018-06-07 Джахобрfps = 50 ;  nFrames = 245 ;  xySize = 450 ; % размер gif в пикселях   scaleReduction = 2 ; % уменьшение размера: добавляет антиалиасинг   [ pathstr , fname ] = fileparts ( который ( mfilename )); % сохранить файлы под тем же именем и в месте расположения файла   figHandle = цифра ( 2324455 );  clfaxesHandle = оси ;  удерживать ( axesHandle , 'on' )set ( figHandle , 'Units' , 'pixel' ); set ( figHandle , 'position' , [ 1 1 xySize * scaleReduction xySize * scaleReduction ]); % большое начальное изображение для последующего сглаживания [xy width height]     set ( figHandle , 'GraphicsSmoothing' , 'on' ) % требуется как минимум версия 2014b  set ( axesHandle , 'position' , [ - 0,05 - 0,05 1,1 1,1 ]); % растянуть ось больше, чем на рисунке, простой способ избавиться от отметок [xy width height]    ось ровная ; Drawow ;  фи = ( 1 + sqrt ( 5 )) / 2 ;  b = журнал ( фи ) / ( пи / 2 );  thetaXextreme = atan ( b ) + pi / 2 * ( 2 : - 2 : - 20 );  rXextreme = phi . ^ ( thetaXextreme * 2 / pi );  [ Xextreme , yXext ] = pol2cart ( thetaXextreme , rXextreme );  thetaYextreme = atan ( b ) + pi / 2 * ( 1 : - 2 : - 21 );  rYextreme = phi . ^ ( thetaYextreme * 2 / пи );  [ xYext , Yextreme ] = pol2cart ( thetaYextreme , rYextreme );  тета = пи / 2 * ( 3 : - 0,02 : - 20 ); % точек кривой   г = фи . ^ ( тэта * 2 / пи ); % радиусов   [ X , Y ] = pol2cart ( тета , г ); % декартовой системы координат   для useColor = [ false true ]     CLA ( axesHandle );  для m = 1 : numel ( Xextreme ) - 2     если useColor  cmap = [ 0,0 0,0 0,0 ; ... 1 цвет спирали; чернить     0,3 0,3 0,3 ; ... 2 цвета края коробки; серый   1,0 0,8 0,8 ; ... 3 ящика-наполнителя; бледно-красный   1,0 1,0 0,7 ; ... 4 ящика-наполнителя; палевый   0,8 1,0 0,8 ; ... 5 коробок-наполнителей; бледно-зеленый   0,8 0,8 1,0 ]; % 6 наполнение коробки; бледно-синий    cmap = round ( cmap . * 255 ) ./ 255 ; % округлить до uint8 позиций    curVers = '_color' ;   если Xextreme ( m ) < 0  colFilling = cmap ( 3 , :); % бледно-красный    еще colFilling = cmap ( 4 , :); % палевый    конец патч ([ Xextreme ( m ) Xextreme ( m ) Xextreme ( m + 2 ) Xextreme ( m + 2 ) Xextreme ( m )], ...     [ Yextreme ( m + 1 ) Yextreme ( m ) Yextreme ( m ) Yextreme ( m + 1 ) Yextreme ( m + 1 )], ...      colFilling , 'EdgeColor' , cmap ( 2 , :), 'Ширина линии' , 3 )  если Yextreme ( m ) < 0  colFilling = cmap ( 5 , :); % бледно-зеленый    еще colFilling = cmap ( 6 , :); % бледно-синий    конец патч ([ Xextreme ( m + 2 ) Xextreme ( m + 2 ) Xextreme ( m + 1 ) Xextreme ( m + 1 ) Xextreme ( m + 2 )], ...     [ Yextreme ( m + 2 ) Yextreme ( m ) Yextreme ( m ) Yextreme ( m + 2 ) Yextreme ( m + 2 )], ...      colFilling , 'EdgeColor' , cmap ( 2 , :), 'Ширина линии' , 3 )  еще cmap = [ 0,0 0,0 1,0 ; ... 1 цвет спирали; синий     0,0 0,0 0,0 ; ... 2 цвета края коробки; чернить   1.0 1.0 1.0 ]; % 3 наполнение коробки; белый    cmap = round ( cmap . * 255 ) ./ 255 ; % округлить до uint8 позиций    curVers = '' ;   сюжет ([ Xextreme ( m ) Xextreme ( m ) Xextreme ( m + 2 ) Xextreme ( m + 2 ) Xextreme ( m )], ...     [ Yextreme ( m + 1 ) Yextreme ( m ) Yextreme ( m ) Yextreme ( m + 1 ) Yextreme ( m + 1 )], ...      '-' , 'цвет' , cmap ( 2 , :), 'Ширина линии' , 3 ) сюжет ([ Xextreme ( m + 2 ) Xextreme ( m + 2 ) Xextreme ( m + 1 ) Xextreme ( m + 1 ) Xextreme ( m + 2 )], ...     [ Yextreme ( m + 2 ) Yextreme ( m ) Yextreme ( m ) Yextreme ( m + 2 ) Yextreme ( m + 2 )], ...      '-' , 'цвет' , cmap ( 2 , :), 'Ширина линии' , 3 ) конец конец  plot ( X , Y , '.-' , 'linewidth' , 5 , 'color' , cmap ( 1 , :), 'Markersize' , 5 * 3.4 ) % сюжетная спираль  scale = linspace ( log ( - Xextreme ( 3 )), log ( - Xextreme ( 5 )), nFrames + 1 ); % начните с полностью покрытой области, увеличивайте масштаб до повторения    scale = exp ( масштаб ); % логарифмической продажи    масштаб = масштаб ( 1 : конец - 1 ); % обрезать сдвоенный кадр     RGBimageStack = uint8 ( ones ( xySize * scaleReduction , xySize * scaleReduction , 3 , nFrames )); % выделить    для iFrame = 1 : nFrames     ось равна  xlim ([ - масштаб ( iFrame ) масштаб ( iFrame )]) % масштаб   ylim ([ - масштаб ( iFrame ) масштаб ( iFrame )]) % масштаб   drawnow выставить ; % вызывает обновление графики и объектов пользовательского интерфейса со всеми ожидающими изменениями   % сохранить SVG если iFrame == 1 % только один раз     если ~ isempty ( который ( 'plot2svg' ))  posSave = get ( figHandle , 'позиция' );    set ( figHandle , 'position' , [ 1 1 800 800 ]); % большое начальное изображение для последующего сглаживания [xy width height]      plot2svg ( fullfile ( pathstr , [ fname curVers '.svg' ]), figHandle ) %, автор: Юрг Швайцер.     set ( figHandle , 'position' , posSave ); % сбросить размер   set ( axesHandle , 'position' , [ - 0,05 - 0,05 1,1 1,1 ]); % растянуть ось больше, чем на рисунке, простой способ избавиться от отметок [xy width height]     еще disp ( 'plot2svg.m недоступен; см. http://www.zhinst.com/blogs/schwizer/' ); конец конец  %% сохранить анимацию f = getframe ( figHandle );   RGBimageStack (:,:,:, iFrame ) = f . cdata ; % хранить    конец  уменьшенныйRGBimage = imReduceSize ( RGBimageStack , scaleReduction ); % уменьшение размера: добавляет лучшее сглаживание    map = createImMap ( уменьшенныйRGBimage , 32 , cmap ); % цветовая карта    im = uint8 ( единицы ( xySize , xySize , 1 , nFrames )); % выделить изображение с индексом цветовой карты    для iFrame = 1 : nFrames    im (:,:, 1 , iFrame ) = rgb2ind ( уменьшенныйRGBimage (:,:,:, iFrame ), map , 'nodither' ); % RGB для цветовой карты индексированного изображения    конец imwrite ( im , map , fullfile ( pathstr , [ fname curVers '_in.gif' ]), 'DelayTime' , 1 / fps , 'LoopCount' , inf ) % save gif     disp ([ fname curVers '_in.gif имеет' num2str ( numel ( im ) / 10 ^ 6 , 4 ) 'Megapixels' ]) % Категория: Анимированные файлы GIF, превышающие ограничение в 50 МП       imwrite ( im (:,:,:, iFrame : - 1 : 1 ), map , fullfile ( pathstr , [ fname curVers '_out.gif' ]), 'DelayTime' , 1 / fps , 'LoopCount' , inf ) % сохранить gif     %% экономия MP4 и WebM cd ( pathstr ); % установить путь к рабочей папке  videoFileName = [ Fname curVers '_in' ]; VID = VideoWriter ( videoFileName , 'MPEG-4' ); % Подготовить новый файл          вид . FrameRate = fps ;   вид . Качество = 100 ; % качества в [0% 100%]    открытый ( видео ); для iRep = 1 : 5 % петель     для iFrame = 1 : nFrames    writeVideo ( vid , RGBimageStack (:,:,:, iFrame )); конец конец закрыть ( видео ); %  disp ( 'преобразование из MP4 в WebM (в настоящее время Matlab не поддерживает webm)' ); пытаться dosCommand = [ '! ffmpeg -i' videoFileName '.mp4' ...   % Команда и источник     '-c: v libvpx-vp9 -crf 30 -b: v 0 -deadline best' ... % постоянное (наилучшее) качество; см .: https://trac.ffmpeg.org/wiki/Encode/VP9 videoFileName '.webm' ]; % целевой конверсии   eval ( dosCommand ); % запустить преобразование из mp4 в webm  ловить disp ([ '"ffmpeg.exe" недоступен в пути "' pathstr '" (или другая проблема); см. https://ffmpeg.zeranoe.com/builds/' ]);   конецконецфункция  im = imReduceSize ( im, redSize )  % Вход:% im: image, [imRows x imColumns x nChannel x nStack] (unit8)% imRows, imColumns: должно делиться на redSize% nChannel: обычно 3 (RGB) или 1 (серый)% nStack: количество сложенных изображений% обычно 1; > 1 для анимации% redSize: 2 = половина размера (четверть пикселей)% 3 = треть размера (девятая часть пикселей)% ... и так далее% Выход:% imNew: unit8 ([imRows / redSize x imColumns / redSize x nChannel x nStack])%% альтернативой является: imNew = imresize (im, 1 / reduceImage, 'билинейный');% НО "бикубический" и "билинейный" дает нечеткие линии% IMHO эта функция дает более хорошие результаты, поскольку "imresize" [ nRow , nCol , nChannel , nStack ] = размер ( im );  если redSize == 1 ; возврат ; конец % нечего делать    если redSize ~ = round ( abs ( redSize )); error ( '"redSize" должен быть положительным целым числом' ); конец   если rem ( nRow , redSize ) ~ = 0 ; error ( 'количество строк должно быть кратно redSize' ); конец   если rem ( nCol , redSize ) ~ = 0 ; error ( 'количество пикселей-столбцов должно быть кратно "redSize"' ); конец   nRowNew = nRow / redSize ;  nColNew = nCol / redSize ;  им = двойной ( им ) . ^ 2 ; % изменение масштаба яркости с "линейной на человеческий глаз" на "физическую область"; см. YouTube: / смотреть? v = LKnqECcg6Gw   im = reshape ( im , nRow , redSize , nColNew * nChannel * nStack ); % пакетов шириной redSize, как столбцы рядом друг с другом      im = сумма ( im , 2 ); % сумма во всех строках. Размер результата: [nRow, 1, nColNew * nChannel]   im = перестановка ( im , [ 3 , 1 , 2 , 4 ]); % переместить одиночное измерение-2 в измерение-3; транспонировать изображение. Размер результата: [nColNew * nChannel, nRow, 1]    im = reshape ( im , nColNew * nChannel * nStack , redSize , nRowNew ); % пакетов шириной redSize, как столбцы рядом друг с другом      im = сумма ( im , 2 ); % сумма во всех строках. Размер результата: [nColNew * nChannel, 1, nRowNew]   im = перестановка ( im , [ 3 , 1 , 2 , 4 ]); % переместить одноэлементное измерение-2 в измерение-3; транспонировать изображение обратно. Размер результата: [nRowNew, nColNew * nChannel, 1]    im = reshape ( im , nRowNew , nColNew , nChannel , nStack ); % помещая все каналы (rgb) назад друг за другом в третьем измерении       im = uint8 ( sqrt ( im ./ redSize ^ 2 )); % иметь в виду; перенормировать яркость: «линейная шкала для человеческого глаза»; назад в uint8   функция  map = createImMap ( imRGB, nCol, startMap )  % createImMap создает цветовую карту, включающую предопределенные цвета.% "rgb2ind" создает карту, но нет возможности предопределить некоторые цвета,% и не обрабатывает сложенные изображения.% Вход:% imRGB: изображение, [imRows x imColumns x 3 (RGB) x nStack] (unit8)% nCol: общее количество цветов, которое должна иметь карта, [целое число]% startMap: предопределенные цвета; формат цветовой карты, [px 3] (двойной)imRGB = переставить ( imRGB , [ 1 2 4 3 ]); % шаг 1; сделать единое изображение-столбец (обработка возможного nStack)      imRGBcolumn = Reshape ( imRGB , [], 1 , 3 , 1 ); % шаг 2; сделать единое изображение-столбец   fullMap = double ( переставить ( imRGBcolumn , [ 1 3 2 ])) ./ 255 ; % "изображение столбца" к цветовой карте     [ fullMap , ~ , imMapColumn ] = уникальный ( fullMap , 'строки' ); % найти все уникальные цвета; создать индексированное изображение цветовой карты   % "cmunique" можно использовать, но он ошибочен и неудобен, потому что вывод изменяется между "uint8" и "double"nColFul = размер ( fullMap , 1 );  nColStart = размер ( startMap , 1 );  disp ([ 'Количество цветов:' num2str ( nColFul ) '(включая' num2str ( nColStart ) 'самостоятельно)' ]);    если nCol <= nColStart ; error ( «Недостаточно цветов» ); конец   если nCol > nColFul ; предупреждение ( «Больше цветов, чем нужно» ); конец   isPreDefCol = false ( размер ( imMapColumn )); % в этом    для iCol = 1 : nColStart    diff = sum ( abs ( fullMap - repmat ( startMap ( iCol , :), nColFul , 1 )), 2 ); % разница между предустановленной и всеми расцветками    [ mDiff , index ] = min ( diff ); % найти подходящий (или наиболее похожий) цвет    если mDiff > 0,05 % обработка цвета неточная   предупреждение ([ 'Предопределенный цвет' num2str ( iCol ) 'не отображается на изображении' ])   Продолжать конец isThisPreDefCol = imMapColumn == index ; % найти весь пиксель с предопределенным цветом    disp ([ num2str ( sum ( isThisPreDefCol (:))) 'пиксель имеет предопределенный цвет' num2str ( iCol )]);   isPreDefCol = или ( isPreDefCol , isThisPreDefCol ); % объединить с общим списком   конец[ ~ , mapAdditional ] = rgb2ind ( imRGBcolumn ( ~ isPreDefCol ,:, :), nCol - nColStart , 'nodither' ); % создать карту оставшихся цветов   карта = [ startMap ; mapAdditional ];  

    Лицензирование

    Я, владелец авторских прав на это произведение, публикую его под следующей лицензией:

    Субтитры

    Золотая спираль ...

    Элементы, изображенные в этом файле

    изображает

    copyright license<\/a>"}},"text\/plain":{"en":{"":"copyright license"}}},"{\"value\":{\"entity-type\":\"item\",\"numeric-id\":6938433,\"id\":\"Q6938433\"},\"type\":\"wikibase-entityid\"}":{"text\/html":{"en":{"P275":"CC0<\/a>"}},"text\/plain":{"en":{"P275":"CC0"}}}}" class="wbmi-entityview-statementsGroup wbmi-entityview-statementsGroup-P275 oo-ui-layout oo-ui-panelLayout oo-ui-panelLayout-framed">

    лицензия на авторское право

    CC0

    inception<\/a>"}},"text\/plain":{"en":{"":"inception"}}},"{\"value\":{\"time\":\"+2017-05-03T00:00:00Z\",\"timezone\":0,\"before\":0,\"after\":0,\"precision\":11,\"calendarmodel\":\"http:\\\/\\\/www.wikidata.org\\\/entity\\\/Q1985727\"},\"type\":\"time\"}":{"text\/html":{"en":{"P571":"3 May 2017"}},"text\/plain":{"en":{"P571":"3 May 2017"}}}}" class="wbmi-entityview-statementsGroup wbmi-entityview-statementsGroup-P571 oo-ui-layout oo-ui-panelLayout oo-ui-panelLayout-framed">

    зарождение

    3 мая 2017

    История файлов

    Щелкните дату / время, чтобы просмотреть файл в том виде, в котором он был в то время.

    Следующие страницы английской Википедии используют этот файл (страницы других проектов не указаны):

    Глобальное использование файлов

    Следующие другие вики используют этот файл:

    • Использование на ckb.wikipedia.org
      • لوولپێچی زێڕین
    • Использование на en.wiktionary.org
      • золотая спираль
    • Использование на es.wikipedia.org
      • Эспираль дорада
    • Использование на gl.wikipedia.org
      • Espiral dourada
    • Использование на sl.wikipedia.org
      • Злата спирала
    • Использование на uk.wikipedia.org
      • Золота спіраль
      • Шаблон: Graphic-design2019-week-new
      • Шаблон: Graphic-design2019-week-better
      • Обговорення: Роб Яноф
      • Обговорення: Паула Шер
      • Обговорення: Ubuntu (шрифт)
      • Обговорення шаблону: Шрифт
      • Обговорення: Arial Unicode MS
      • Обговорення: Lucida Sans Unicode
      • Обговорення: Ніколя Дженсон
      • Обговорення: Музей дизайну (Цюрих)