Рабочие будни

Архивы

Archive for августа, 2009

Разбор ломаной на мелкие отрезки

Среда, августа 12, 2009

Предположим что существует некий массив из координат отрезков составляющих какую то ломанную линию.
Требуется разбить эту линию на более мелкие отрезки. Зачем? Да мало ли, мне вот понадобилось.

private  ArrayList breakLines (ArrayList aV) //на входе массив координат
{

int snap=200; //требуемое количество отрезков на выходе
ArrayList tPixel = new ArrayList (); //новый массив координат для возврата
ArrayList aPixel = new ArrayList (); //временный массив координат

Point obj1 = new Point ();
int b=0;
foreach (Point obj in aV)
{
if (b != 0)
{
float x1 = obj1.X;
float y1 = obj1.Y;
float x2 = obj.X;
float y2 = obj.Y;
//Алгоритм DDA-линии
int L = (int) Math.Max (Math.Abs (x2 — x1), Math.Abs (y2 — y1));
float dX = (x2 — x1) / L;
float dY = (y2 — y1) / L;
aPixel.Add (new Point ((int) x1, (int) y1)); //Начальную точку в массив

for (int i = 0; i < L; i++)
{
x1 = (x1 + dX);
y1 = (y1 + dY);
aPixel.Add (new Point ((int) x1,(int) y1)); //Следующую точку в массив
}
//aPixel.Add (new Point ((int) x2, (int) y2)); // Можно раскомментировать если требуется дублирование каждой последней точки в отрезке
}
obj1 = obj;
b++;
}
for (int i=0;i<snap;i++)   tPixel.Add (aPixel[(int)(aPixel.Count*i/snap)]);
return tPixel;
}

Такая вот теорема для критики. Если есть кому что добавить, то вэлком.

Установка SVN сервера поверх Apache в gentoo

Четверг, августа 6, 2009

Ставим Subversion:
USE="apache2" emerge subversion
Конфигурируем:
emerge --config =dev-util/subversion-1.4.6

Редактируем /etc/conf.d/apache2:
добавляем -D DAV -D SVN

Изменим /etc/apache2/modules.d/47_mod_dav_svn.conf:
<Location /svn/repos>
DAV svn
SVNPath /var/svn/repos
AuthType Basic
AuthName «Subversion repository»
AuthUserFile /var/svn/conf/svnusers
Require valid-user
</Location>

Создаём файл паролей:
htpasswd2 -m -c /var/svn/conf/svnusers USERNAME
Создаём других пользователей:
htpasswd2 -m /var/svn/conf/svnusers USERNAME

Перезапускаем Apache:
/etc/init.d/apache2 restart

Готово.
Теперь доступ к репозиториям можно получить как браузером, так и SVN клиентом по адресу http://mydomain/svn/repos/

Легко и просто...

Вычисляем длину линии по координатам

Понедельник, августа 3, 2009

Этот и последующие статьи будут из серии простейших операций с 2d графикой. Получается так, что с частотой в год или два,  приходится выполнять одинаковые задачи с подобными незатейливыми алгоритмами. И постоянно приходится вспоминать одни и те же действия. Статьи будут краткие  и простые. Текущий заказчик захотел исполнение на C# , следовательно код будет именно на нём.

private Double length (Double _x1, Double _y1, Double _x2, Double _y2) {
return Math.Sqrt (Math.Pow (_x2 — _x1, 2) + Math.Pow (_y2 — _y1, 2));
}

И да, скажете почему нет подсветки кода? Мне она не нужна.