17.04.2014
Для реализации визуализации шрифтов на шейдерах в движке потребовалось преобразование кривой Безье (кубической, квадратичной) в набор дуг окружности. Долго штудировал математику, просмотрел даже некоторые забугорные whitepaper’s, но красивого решения не нашел.
Исходные данные, кубические кривые:
B = { ( 0, 0 ), ( 0.25, 0.25 ), ( 0.75, 0.75 ), ( 1, 0 ) }

B = { ( 0, 0 ), ( 0.25, 0.75 ), ( 0.75, 0.25 ), ( 1, 1 ) }

B = { ( 0.25, 0.25 ), ( 0.75, 0.75 ), ( 0.25, 0.5 ), ( 0.75, 0.25 ) }

Квадратичные кривые:
B = { ( 0, 0 ), ( 0.75, 0.75 ), ( 1, 0 ) }

B = { ( 0, 0 ), ( 0, 1 ), ( 1, 1 ) }

B = { ( 0.25, 0.25 ), ( 0.75, 0.75 ), ( 0.45, 1 ) }

В итоге был найден достаточно простой рекурсивный алгоритм, которые аппроксимирует кривые. В результате получены следующие картинки.
Кубические кривые (в порядке предоставления входных данных):



Квадратичные кривая (в порядке представления входных данных):



На каждую кривую получается в среднем 5-10 дуг окружностей. Вполне допустимо.
12.01.2014
Наткнулся вот на такую картинку. За последние 25 лет 75% машин производства Honda до сих пор ездят по дорогам. Это рекорд.

11.11.2013
Наткнулся вот тут на такую мысль. Считаю важной.
«The ability to take data – to be able to understand it, to process it, to extract value from it, to visualize it, to communicate it is going to be a hugely important skill in the next decades.»
Автор: Hal Varian, Chief Economist, Google
03.10.2013
Сегодня как и обещал, расскажу про то, как сделать готовый продукт. В следующих статьях, если они будут – расскажу про то, как подключить в Eclipse RCP обычные maven’овские зависимости.
Итак, открываем наши проекты в eclipse и делаем вот что. В проекте ru.mrdekk.ercp.gui есть файлик ru.mrdekk.ercp.gui.product. Так вот – этот файлик надо перенести в проект ru.mrdekk.ercp.repository:

Необходимо сконфигурировать уровни запуска и параметры автостарта. Открываем файл продукта, который мы только что перенесли. Переходим на вкладку Configuration. В Start Levels … нажимаем кнопку Add …

Далее в появившемся окне необходимо выбрать бандлы org.eclipse.equinox.common и org.eclipse.equinox.ds и нажать ОК

Для обоих бандлов установить start level = 2 и auto start = true, далее таким же способом необходимо добавить бандл org.eclipse.core.runtime:

Для этого бандла необходимо установить только auto start = true. В итоге получим что-то вроде:

На вкладке Overview в поле ID введите ru.mrdekk.ercp.product:

Измените «The product configuration is base on…» на features:

На вкладке Dependencies нажмите кнопку Add …

И выберите org.eclipse.rcp:

Также нажмите кнопку Add Required … eclipse добавить требуемые зависимости:

И конечно добавить нашу фичу:

Теперь запустим сборку проекта через maven, мы должны получить как обычно успешный результат:
[INFO] Reactor Summary:
[INFO]
[INFO] mrdekk.ru eclipse rcp demo - parent ............... SUCCESS [0.109s]
[INFO] mrdekk.ru eclipse rcp demo - gui .................. SUCCESS [2.875s]
[INFO] mrdekk.ru eclipse rcp demo - feature .............. SUCCESS [0.125s]
[INFO] mrdekk.ru eclipse rcp demo - update site .......... SUCCESS [5.531s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.734s
[INFO] Finished at: Thu Oct 03 11:12:56 NOVST 2013
[INFO] Final Memory: 16M/38M
[INFO] ------------------------------------------------------------------------
В папке target/repository мы должны увидеть метаданные и файлы для продукта:

Теперь заставим maven собирать для нас пакет инсталляции продукта, и архивный файл. Для этого в pom.xml проекта ru.mrdekk.ercp.repository необходимо написать следующее:
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-director-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<!-- install the product using the p2 director -->
<id>materialize-products</id>
<goals>
<goal>materialize-products</goal>
</goals>
</execution>
<execution>
<!-- create zip file with the installed product -->
<id>archive-products</id>
<goals>
<goal>archive-products</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
И запустите сборку снова, вы должны будете увидеть каталог продукта и архивный файл в папке target:
[INFO] Reactor Summary:
[INFO]
[INFO] mrdekk.ru eclipse rcp demo - parent ............... SUCCESS [0.094s]
[INFO] mrdekk.ru eclipse rcp demo - gui .................. SUCCESS [2.766s]
[INFO] mrdekk.ru eclipse rcp demo - feature .............. SUCCESS [0.109s]
[INFO] mrdekk.ru eclipse rcp demo - update site .......... SUCCESS [12.953s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 24.250s
[INFO] Finished at: Thu Oct 03 11:17:54 NOVST 2013
[INFO] Final Memory: 17M/42M
[INFO] ------------------------------------------------------------------------

Вы можете запустить полученный продукт, и увидите примерно следующее:

На этом основные статьи по Eclipse RCP закончены. Вы можете добавить этот проект например в Hudson и автоматически собирать его там. Я постараюсь сделать еще несколько статей, в которых расскажу про то, как подключать в Eclipse RCP проекты обычные maven’овские зависимости.
P.S. Исходники как всегда доступны в github
27.09.2013
Продолжаю повествование о том, как собрать Eclipse RCP проект с помощью maven’а. Сегодня поговорим о том, как сделать Update Site для нашего проекта. Update Site нужен для распространения компонентов Eclipse RCP и готовых приложений. Когда Вы устанавливаете что-то себе в Eclipse вы пользуетесь одним или несколькими Update Site’ами.
Итак, открываем наш проект.
Для начала создадим проект Update Site’а через стандартные функции Eclipse, для этого File > New > Other … > Plug-In Development > Update Site Project:


Eclipse создаст нам проект. Далее необходимо site.xml переименовать в category.xml. Для этого нужно кликнуть правой кнопкой мыши на этом файле и выбрать Refactor > Rename:

Далее необходимо открыть полученный файл в Manifest Editor. В Eclipse есть бага, которая не позволяет сделать это простым двойным щелчком, поэтому нужно по правой кнопке выбрать Open With > Category Manifest Editor.
Далее создадим и отредактируем некоторые параметры в нашей категории:

Добавим ссылку на новую фичу (надо нажать на кнопку Add Feature). Выберем нашу фичу:


После этого, как обычно преобразуем полученный проект в проект maven. Для этого по правой кнопке Configure > Convert to Maven Project. Не забываем о том, что в настройках maven’а необходимо повторять те же идентификаторы. Тип проекта – eclipse-repository

После преобразования проекта в проект maven’а необходимо в pom.xml указать ссылку на родительский проект, после чего полученный pom.xml примет примерно следующий вид:
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>ru.mrdekk.ercp</groupId>
<artifactId>ru.mrdekk.ercp.parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>ru.mrdekk.ercp.repository</artifactId>
<packaging>eclipse-repository</packaging>
<name>mrdekk.ru eclipse rcp demo - update site</name>
</project>
И добавим полученный проект в качестве модуля в родительский pom.xml. Секция modules будет выглядеть следующим образом:
<modules>
<module>gui</module>
<module>feature</module>
<module>repository</module>
</modules>
После чего все это дело надо сохранить и попробовать собрать через родительский проект maven’ом. Должно получится примерно следующее:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] mrdekk.ru eclipse rcp demo - parent ............... SUCCESS [0.094s]
[INFO] mrdekk.ru eclipse rcp demo - gui .................. SUCCESS [2.984s]
[INFO] mrdekk.ru eclipse rcp demo - feature .............. SUCCESS [0.109s]
[INFO] mrdekk.ru eclipse rcp demo - update site .......... SUCCESS [1.157s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.266s
[INFO] Finished at: Fri Sep 27 10:38:27 NOVST 2013
[INFO] Final Memory: 15M/37M
[INFO] ------------------------------------------------------------------------
Теперь протестируем полученный репозиторий, для этого надо через правую кнопку мыши зайти в свойства проекта папки target/repository проекта repository (Properties).

Затем выделить и сохранить в буфер обмена путь к полученному репозиторию:

Теперь выберем в главном меню Help > Install New Software … Добавим новый Update Site (надо нажать кнопку Add):

Мы должны увидеть содержимое этого репозитория, т.е. нашу фичу:

Нажмите Cancel, ведь мы пока не собираемся устанавливать нашу фичу в Eclipse. Как обычно исходники доступны на github тут