<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/prosolver/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя prosolver]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Mon, 27 Apr 2026 03:27:05 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Масштабирование, поворот и сдвиг растра методом суперсемплинга]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/521124/</guid>
      <link>https://habr.com/ru/articles/521124/?utm_campaign=521124&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В процессе разработки геоинформационной системы возникла необходимость в трансформации фотографий земной поверхности. В связи с этим была поставлена задача написать функции масштабирования, поворота и субпиксельного сдвига растра методом суперсемплинга. <br>
<br>
Соответствующие функции были успешно созданы и внедрены, а поскольку они могут представлять интерес для широкой общественности, я решил опубликовать готовую утилиту с открытым кодом и пояснениями.<br>
<br>
<a href="http://prosolver.kiev.ua/RSSUtil.zip" rel="nofollow">Утилита и исходные коды размещены в архиве здесь.</a><br>
<br>
Среда разработки: Delphi/Object Pascal.<br>
<br>
Свободное использование и распространение приветствуются.<br>
<br>
Ниже мы рассмотрим теорию и практику.<br>
<br>
<div style="text-align:center;"><img src="https://habrastorage.org/webt/bl/hq/pi/blhqpia-jgahbnf3tus9f9w-j3u.png"></div><br> <a href="https://habr.com/ru/articles/521124/?utm_campaign=521124&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 14 Oct 2020 15:37:57 GMT</pubDate>
      <dc:creator><![CDATA[Prosolver]]></dc:creator>
      <category><![CDATA[Delphi]]></category><category><![CDATA[Алгоритмы]]></category><category><![CDATA[Обработка изображений]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[поворот изображений]]></category><category><![CDATA[масштабирование изображений]]></category><category><![CDATA[сдвиг изображений.]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Прецизионный поворот растрового изображения на произвольный угол]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/160401/</guid>
      <link>https://habr.com/ru/articles/160401/?utm_campaign=160401&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Поворот растрового изображения на углы, кратные 90°, относительно геометрического центра изображения – задача тривиальная и решается без потери качества простым преобразованием координат каждого пикселя.<br/>
<br/>
Для поворота растрового изображения на произвольный угол разработаны быстрые но не оптимальные алгоритмы, дающие приемлемую для практических целей аппроксимацию с потерей качества (например, <a href="http://zhukovsd.blogspot.com/2010/04/blog-post.html">этот</a>).<br/>
<img src="https://habrastorage.org/getpro/habr/post_images/cb6/5b5/7db/cb65b57dbeee53418c96abe9a361e854.png" align="left"/> Довольно давно, из чисто спортивного интереса, меня заинтересовала задача максимально точного поворота растрового изображения на произвольный угол. К сожалению, мне нигде не удалось найти готовый алгоритм, поэтому пришлось делать его собственноручно. Даже если в итоге я «изобрёл велосипед», результат, как мне кажется, получился достаточно интересным, чтобы им можно было поделиться.<br/>
<br/>
Ниже мы рассмотрим алгоритм прецизионного поворота растрового изображения на произвольный угол относительно произвольного центра с минимальными потерями.<br/>
<br/>
Выражаю благодарность Харченко Владиславу Владимировичу за оказанную помощь.<br/>
 <a href="https://habr.com/ru/articles/160401/?utm_campaign=160401&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sun, 02 Dec 2012 04:55:47 GMT</pubDate>
      <dc:creator><![CDATA[Prosolver]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Алгоритмы]]></category><category><![CDATA[Обработка изображений]]></category>
      <category><![CDATA[поворот изображений]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Решение задачи коммивояжёра на плоскости рекурсивным жадным алгоритмом]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/151954/</guid>
      <link>https://habr.com/ru/articles/151954/?utm_campaign=151954&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В <a href="http://habrahabr.ru/post/151151">предыдущей публикации</a> был рассмотрен алгоритм решения задачи коммивояжёра на плоскости рекурсивным полным перебором. Результат получился любопытным, но итоговый маршрут содержал очевидные неоптимальные участки. В предлагаемой заметке рассмотрен улучшенный алгоритм, который я назвал «рекурсивным жадным алгоритмом». Признаюсь сразу, итоговый маршрут в сравнении с рекурсивным полным перебором получается лучше, в среднем, на 8%.<br/>
 <a href="https://habr.com/ru/articles/151954/?utm_campaign=151954&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 21 Sep 2012 16:26:08 GMT</pubDate>
      <dc:creator><![CDATA[Prosolver]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Ненормальное программирование]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[задача коммивояжера]]></category><category><![CDATA[рекурсия]]></category><category><![CDATA[жадный алгоритм]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Решение задачи коммивояжёра рекурсивным полным перебором]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/151151/</guid>
      <link>https://habr.com/ru/articles/151151/?utm_campaign=151151&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Сформулируем задачу.<br/>
Дано N узлов, расположенных на плоскости. Задан входной узел (Вх) и выходной узел (Вых). Необходимо обнаружить кратчайший путь, охватывающий все узлы, начинающийся во входном узле, заканчивающийся в выходном узле и проходящий через каждый узел только один раз.<br/>
<br/>
Есть мнения, что задача коммивояжёра может формулироваться ещё двумя способами:<br/>
1. Необходимо обнаружить кратчайший гамильтонов цикл.<br/>
2. Необходимо обнаружить кратчайший путь, начинающийся в заданном узле.<br/>
<br/>
Однако обе эти формулировки при ближайшем рассмотрении оказываются частными случаями первоначальной формулировки.<br/>
Формулировка 1 подразумевает, что входным узлом может быть любой узел, а выходным — один из ближайших к нему. Что требует полного перебора всех ближайших узлов к произвольно выбранному узлу.<br/>
Формулировка 2 подразумевает, что входной узел задан, а выходным узлом может быть любой. Что требует полного перебора всех выходных узлов с последующим выбором кратчайшего пути из всех кратчайших.<br/>
Поэтому мы остановимся на первоначальной формулировке, и будем решать задачу в общем виде.<br/>
 <a href="https://habr.com/ru/articles/151151/?utm_campaign=151151&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 10 Sep 2012 09:13:12 GMT</pubDate>
      <dc:creator><![CDATA[Prosolver]]></dc:creator>
      <category><![CDATA[Алгоритмы]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[задача коммивояжёра]]></category><category><![CDATA[полный перебор]]></category><category><![CDATA[рекурсия]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
