<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3732311</guid>
        <pubDate>Tue, 11 Jul 2017 18:07:27 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3732311</link>
        <description><![CDATA[ter_nk_: Написали вирус атаковал популярные месседжеры. Давайте напишем непопулярный месседжер.]]></description>
        <author>ter_nk_</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3726093</guid>
        <pubDate>Sun, 04 Jun 2017 06:22:12 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3726093</link>
        <description><![CDATA[prografix: В итоге у меня получился такой алгоритм для вычисления квадрата расстояния от точки до треугольника:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">// Функция getDistance2Edge вычисляет квадрат расстояния от точки до ребра треугольника</div><div class="code_line">&nbsp;</div><div class="code_line">bool getDistance2Edge ( double a, double b, double c, double &amp; d )</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Проверим попадает ли проекция точки на ребро?</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double t = fabs ( b - c );</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( t &#62;= a ) return false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычислим квадрат расстояния до ребра</div><div class="code_line">&nbsp;&nbsp; &nbsp;d = b + c - 0.5 * ( a + t * t / a );</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( d &#62; 0 )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;d *= 0.5;</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;d = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return true;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">double getDistance2Facet ( double a, double b, double c, double d, double e, double f, double q )</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычислим скалярные произведения</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double p1 = 0.5 * ( a + c - b );</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double p2 = 0.5 * ( d + a - e );</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double p3 = 0.5 * ( c + d - f );</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Проверим попадает ли проекция точки внутрь треугольника?</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double g = a * p3 - p1 * p2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( g &#60;= 0 ) return q;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Если треугольник - вырожденный, то вернём квадрат расстояния до ребра</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double h = a * c - p1 * p1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( h &#60;= 0 ) return q;</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double gg = g * g;</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double ah = a * h;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( 4 * gg * c &#62;= ah * h ) return q;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычислим квадрат расстояния до плоскости треугольника</div><div class="code_line">&nbsp;&nbsp; &nbsp;q -= gg / ah;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return q &#60; 0 ? 0 : q;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">double getDistance2Triangle ( double ab, double bc, double ca, double ap, double bp, double cp )</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;double d = _min ( ap, bp, cp );</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( ! d ) return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычислим квадраты расстояний до рёбер треугольника</div><div class="code_line">&nbsp;&nbsp; &nbsp;double d1, d2, d3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;nat edge = 0; // номер ближайшего к точке ребра</div><div class="code_line">&nbsp;&nbsp; &nbsp;nat count = 0; // количество рёбер на которые есть проекция точки</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( getDistance2Edge ( ab, ap, bp, d1 ) )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( d &#62; d1 ) d = d1, edge = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;++count;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( getDistance2Edge ( bc, bp, cp, d2 ) )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( d &#62; d2 ) d = d2, edge = 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;++count;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( getDistance2Edge ( ca, cp, ap, d3 ) )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( d &#62; d3 ) d = d3, edge = 3;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;++count;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( ! d ) return 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Если точка проецируется хотя бы на 2 ребра треугольника </div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( count &#62; 1 )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;switch ( edge )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case 1: return getDistance2Facet ( ab, bc, ca, ap, bp, cp, d );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case 2: return getDistance2Facet ( bc, ca, ab, bp, cp, ap, d );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case 3: return getDistance2Facet ( ca, ab, bc, cp, ap, bp, d );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return d;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">double getDistance2 ( const Triangle3d &amp; t, const Vector3d &amp; p )</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычислим квадраты расстояний до вершин треугольника</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double ap = qmod ( t.a - p );</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double bp = qmod ( t.b - p );</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double cp = qmod ( t.c - p );</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычислим квадраты расстояний между вершинами треугольника</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double ab = qmod ( t.a - t.b );</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double bc = qmod ( t.b - t.c );</div><div class="code_line">&nbsp;&nbsp; &nbsp;const double ca = qmod ( t.c - t.a );</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Основной алгоритм</div><div class="code_line">&nbsp;&nbsp; &nbsp;return getDistance2Triangle ( ab, bc, ca, ap, bp, cp );</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Причём класс Triangle3d можно заменить на треугольник в пространстве другой размерности. Можно было сделать класс-шаблон, но я не стал, т.к. другие размерности меня пока не интересуют.<br>
11.06.2017 я обнаружил и исправил ошибку в этом алгоритме.]]></description>
        <author>prografix</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3724772</guid>
        <pubDate>Sat, 27 May 2017 14:28:49 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3724772</link>
        <description><![CDATA[amk: Посмотрел твою формулу высоты треугольника (думаю): именно она получается, если найденную по формуле Герона площадь поделить на половину основания (возведя в квадрат естественно).<br><br>Даже если через вектора проще, всё равно такое решение может оказаться полезным. Иногда ничего кроме дистанций неизвестно.<br><br>У меня помнится (но я решал именно через вектора) подобная задача разбилась на этапы: <br>- определить расстояние от точки до плоскости треугольника (со знаком) в моей задаче это было существенно;<br>- определить положение точки - основания высоты получившегося тетраэдра;<br>- определить положение этой точки относительно треугольника (внутри, напротив одной из сторон, напротив вершины).<br>Ну и дальше шла прочая обработка. В частности точка встраивалась в триангуляцию поверхности. Иногда получалось криво (неудачно выбрал принцип перестройки триангуляции).<br><br>Жаль до конца не получилось довести.]]></description>
        <author>amk</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3724758</guid>
        <pubDate>Sat, 27 May 2017 11:31:49 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3724758</link>
        <description><![CDATA[prografix: Изначально я решал задачу - найти расстояние от точки до треугольника в пространстве. <br>Первое, что пришло в голову - это вычислить его через вектора. А потом я обнаружил, что квадрат расстояния можно вычислить через квадраты расстояний между точками. Их 6 штук ( 3 между сторонами треугольника и 3 от вершин до точки ). Сейчас расписываю формулы. Возможно, с вычислительной точки зрения так будет быстрее.]]></description>
        <author>prografix</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3724674</guid>
        <pubDate>Fri, 26 May 2017 15:57:45 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3724674</link>
        <description><![CDATA[amk: Теорема Пифагора тут не поможет.<br>Но по мне так проще по формуле Герона найти площадь треугольника, а зная площадь, нет проблем найти и все высоты.<br>По крайней мере меньше умножений/делений приходится выполнять.]]></description>
        <author>amk</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3723941</guid>
        <pubDate>Tue, 23 May 2017 23:06:16 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3723941</link>
        <description><![CDATA[MIF: По ссылке не пошел. Кажется, формулу, связывающую квадраты сторон прямоугольного треугольника, Пифагор вывел.]]></description>
        <author>MIF</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3723830</guid>
        <pubDate>Tue, 23 May 2017 13:40:30 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3723830</link>
        <description><![CDATA[prografix: В ходе работы над упрощением многогранника я вывел формулу, в которой квадрат высоты треугольника выражается через квадраты сторон при помощи только арифметических операций.<br>
Этот факт мне настолько понравился, что я записал эту формулу в <a class='tag-url' href='https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%81%D0%BE%D1%82%D0%B0_%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%B0' target='_blank'>википедию</a>.]]></description>
        <author>prografix</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722781</guid>
        <pubDate>Thu, 18 May 2017 09:24:45 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722781</link>
        <description><![CDATA[prografix: У меня другой подход: наоборот, постепенно упрощать исходной многогранник.]]></description>
        <author>prografix</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722777</guid>
        <pubDate>Thu, 18 May 2017 09:14:15 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722777</link>
        <description><![CDATA[MBo: А идеи, похожие на Рамера-Дугласа-Пекера, к многогранникам нельзя применить? (понятно, что стянуть грани и сочленить их несравненно сложнее, чем отрезки)<br>
<br>
<a class='tag-url' href='https://gis.stackexchange.com/questions/53495/simplification-algorithms-for-3d-topology' target='_blank'>https://gis.stackexchange.com/questions/534...for-3d-topology</a>]]></description>
        <author>MBo</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722747</guid>
        <pubDate>Thu, 18 May 2017 08:13:33 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722747</link>
        <description><![CDATA[prografix: Эта задача решалась. Есть коммерческие продукты. Например, Simplygon шведской фирмы Donya Labs, у которой потом этот продукт купила Microsoft. <br>Понятно, что никто не будет делиться информацией о том, что можно продать.<br>Упрощать можно по-разному, поэтому я интересуюсь какие будут идеи.]]></description>
        <author>prografix</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722732</guid>
        <pubDate>Thu, 18 May 2017 07:04:04 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722732</link>
        <description><![CDATA[OpenGL: Неужели эта задача не решалась раньше? Вроде же упрощение моделей везде применяется. Или там просто какие-то эвристические алгоритмы используются, а надо точные?]]></description>
        <author>OpenGL</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722429</guid>
        <pubDate>Tue, 16 May 2017 14:35:27 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3722429</link>
        <description><![CDATA[prografix: Есть такая задача. Дан многогранник с большим количеством граней. Для начала будем считать, что они треугольные. Нужно найти похожий на него многогранник с меньшим количеством граней.<br>Тут можно предложить несколько точных формулировок:<br>1) Найти многогранник с наименьшим количеством граней такой, чтобы расстояние между поверхностями многогранников не превышало заданную величину. <br>2) Найти многогранник с заданным количеством граней такой, чтобы расстояние между поверхностями многогранников было минимальным. <br>3) Что-то ещё.<br>У меня есть некоторые идеи, как это можно сделать, но вначале я хочу посмотреть какие будут другие предложения по реализации этой задачи.]]></description>
        <author>prografix</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3713123</guid>
        <pubDate>Fri, 24 Mar 2017 13:37:56 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3713123</link>
        <description><![CDATA[Nirvanko: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410525&view=findpost&p=3711928'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>prografix &#064; <time class="tag-quote__quoted-time" datetime="2017-03-19T10:21:48+00:00">19.03.17, 10:21</time></span><div class='quote '>Вроде здесь много всяких разных специалистов, поэтому у меня появилась идея объединиться и сделать какую-то программу, которую потом можно будет продавать. Что именно делать я не знаю, но думаю, что найдутся люди, которые знают, что и кому можно продать.<br>
Например, кто-то имеет идею, но одному её реализовать нереально, а если группой - то можно.<br>
Недавно некоторые участники форума собирались в Москве ( я потом пожалел, что не присоединился ). Не знаю, что они там обсуждали, но можно было бы обсудить какие-то проекты.</div></div><br>
Дальше обсуждения дело обычно не заходит а тем более когда нет идеи как таковой.<br>
<br>
Перспективна разработка мобильных приложений. Что-нибудь утилитарное, с использованием геолокации.]]></description>
        <author>Nirvanko</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3711928</guid>
        <pubDate>Sun, 19 Mar 2017 10:21:48 +0000</pubDate>
        <title>Совместный проект</title>
        <link>https://forum.sources.ru/index.php?showtopic=410525&amp;view=findpost&amp;p=3711928</link>
        <description><![CDATA[prografix: Вроде здесь много всяких разных специалистов, поэтому у меня появилась идея объединиться и сделать какую-то программу, которую потом можно будет продавать. Что именно делать я не знаю, но думаю, что найдутся люди, которые знают, что и кому можно продать.<br>Например, кто-то имеет идею, но одному её реализовать нереально, а если группой - то можно.<br>Недавно некоторые участники форума собирались в Москве ( я потом пожалел, что не присоединился ). Не знаю, что они там обсуждали, но можно было бы обсудить какие-то проекты.]]></description>
        <author>prografix</author>
        <category>Обсуждаем новые идеи</category>
      </item>
	
      </channel>
      </rss>
	