Работа
GameDev.ru / Работа / Форум / C# Смещенная кривая (4 стр)

C# Смещенная кривая (4 стр)

Страницы: 13 4 5 614 Следующая »
MrShoorУчастникwww4 июля 201820:36#45
UncleMike
> то вы должны мне предоставить все библиотеки от топик стартера
Какие библиотеки? Это тебе надо написать библиотеку, с несколькими функциями, которую я бы мог потом использовать.

Polyflow3d
> я хочу срубить бабла. Распиши что есть на входе и что нужно получить на выходе
Примерный API такой. Это одна вершина патча:

struct PathPoint {
  double X; //x координата вершины
  double Y; //y координата вершины
  double H; //высота над хордой до следующей точки
};

Чтобы было понятно что там за высота над хордой - вот поясняющий рисунок:
arrrcs | C# Смещенная кривая
Знак H определяет в какую стороно оно будет выгнуто. При H=0 у нас прямая.

Набор функций экспортируемых dll:

PContourMaker* CreateContourMaker(); // создает объект, с помощью которого мы будем экспандить контур
void AddPath(PContourMaker* cm, const PathPoint* points, int num_points); // добавляет полилайн к контору
void Expand(double distance); // строит эквидистанту, после экспанда AddPath вызывать никто не будет
int GetExpandedContoursCount(); // возвращает количество контуров после экспанда
int GetContourVerticesCount(int contour_idx); //количество вершин в контуре
void GetContour(int contour_idx, PathPoint* pts); //копирует контур в pts

Решение должно выдавать корректный результат для любых данных. Оно должно быть сопоставимо по скорости (быть не сильно медленнее, скажем медленнее на 20% допустимо, меньше - нет) с аппроксимированным решением. Поскольку скорость текущего решения зависит от аппроксимации, то я в принципе готов предоставить тестовые полигоны с параметрами аппроксимации.

Правка: 7 июля 2018 11:36

iKestПостоялецwww4 июля 201820:46#46
MrShoor
Не очень корректное задание дуги.

Так более кошерно:
struct PathPoint {
  double X; //x координата вершины
  double Y; //y координата вершины
  double fita; //угол между касательной к дуге в точке (X,Y) и хордой до следующей точки.
};

UncleMikeПостоялецwww4 июля 201821:08#47
aspam1982
> Исполнителя нашел. Работа в процессе.
20 дней мусолить задачу, которую можно спокойно сделать за 3 дня? О-о-о-о...

MrShoor
> Какие библиотеки?
Исходные! Я же должен знать классы отвечающие за представление примитивов, классы и методы, которые выдают исходные данные и принимают входные данные, формат выходных данных. У меня все больше сомнений, уважаемый, что вы вообще имеете какое то отношение к программированию.

aspam1982Пользовательwww4 июля 201821:32#48
UncleMike
> 20 дней мусолить задачу, которую можно спокойно сделать за 3 дня? О-о-о-о...
10 дней бравировать своей афигенностью, постоянно указывая на простоту задачи - и так и не понять в чем ее сложность - бесценно, конструктивно, продуктивно.
UncleMikeПостоялецwww4 июля 201821:38#49
aspam1982
> и так и не понять в чем ее сложность

на мой взгляд там все должно быть просто, я несколько лет занимался плоттерами и графическими языками (HPGL и т.п.). Предоставьте мне конкретику (библиотеки, исходные программы) и я тогда смогу более точно оценить прав я или нет.

iKestПостоялецwww4 июля 201822:03#50
aspam1982
>10 дней бравировать своей афигенностью, постоянно указывая на простоту задачи - и так и не понять в чем ее сложность - бесценно, конструктивно, продуктивно.

Единственную не большую сложность вызывает только взаимопересечения элементов, что решается вторым проходом по полученным контурным элементам.

aspam1982Пользовательwww4 июля 201822:20#51
iKest
> Единственную не большую сложность вызывает только взаимопересечения элементов,
> что решается вторым проходом по полученным контурным элементам.
Эта маленькая сложность многократно замедляет алгоритм, а это уже большая сложность.
aspam1982Пользовательwww4 июля 201822:29#52
UncleMike
> на мой взгляд там все должно быть просто, я несколько лет занимался плоттерами
> и графическими языками (HPGL и т.п.). Предоставьте мне конкретику (библиотеки,
> исходные программы) и я тогда смогу более точно оценить прав я или нет.
Библиотек нет, нужно реализовать алгоритм из задания в топике (C#, framework 4). Можно использовать базовые библиотеки и любые потоко-независимые классы. Настолько примитивно стоит задача. Базовый класс примитива сегмента вполне неплохо был задан выше, только высоту H я бы заменил значением Bulge - как то более стандартизированно получается. Думаю для вас не составит труда решить эту задачу максимально оптимальным способом (допустимо до 20% медленнее дискретных апроксимирующих алгоритмов).
iKestПостоялецwww4 июля 201822:39#53
aspam1982
>Эта маленькая сложность многократно замедляет алгоритм, а это уже большая сложность.
Для этого существуют деревья и ограничивающие площади/объёмы, что-бы не проверять постоянно на пересечение новый элемент с уже найденными...
MrShoorУчастникwww4 июля 201823:19#54
UncleMike
> Исходные! Я же должен знать классы отвечающие за представление примитивов,
> классы и методы, которые выдают исходные данные и принимают входные данные,
> формат выходных данных. У меня все больше сомнений, уважаемый, что вы вообще
> имеете какое то отношение к программированию.
Я вон выше описал API, которе надо реализовать в dll. Что тебе еще надо знать то? Принимать и выдавать данные должна твоя библиотека, а не мой код. Мой код я сам смогу прикрутить к библиотеке, если у тебя будет такой API.
Короче я тебя понял, ты просто не знаешь как решать эту задачу, и съезжаешь. Делаешь вид, что не видишь или не понимаешь, то что я написал.

iKest
> Единственную не большую сложность вызывает только взаимопересечения элементов,
> что решается вторым проходом по полученным контурным элементам.
Это и есть самая большая проблема. В итоге задача сводится к построению графа пересечений, подсчету winding number-а на циклах графа и поиску результирующего контура. Но есть одна маааленькая тонкость, арки.

UncleMikeПостоялецwww5 июля 20189:57#55
MrShoor
> Короче я тебя понял, ты просто не знаешь как решать эту задачу, и съезжаешь.
С чего вы взяли? Хорошо, уговорили. Бабло, так бабло. ) Согласны на штуку зелени? Я еще сделаю демку на Юнити, где вы по точкам будете вводить отрезки прямых и дуги, и программа будет строить обводку. Начнем с того, что уточним и согласуем задание.
kiparУчастникwww5 июля 201811:21#56
UncleMike
Ты учитываешь что исходные кривые могут пересекаться? А проходить рядом друг с другом так что пересекутся их расширения?
UncleMikeПостоялецwww5 июля 201813:11#57
kipar
> Ты учитываешь что исходные кривые могут пересекаться? А проходить рядом друг с
> другом так что пересекутся их расширения?
Не учитываю, в задании не сказано, чтобы исключать пересекающиеся участки -
aspam1982
> разработать библиотеку для получения смещенного контура кривой на заданное
> расстояние
kiparУчастникwww5 июля 201813:50#58
UncleMike
Слово "Контур" разве этого не подразумевает?
aspam1982Пользовательwww5 июля 201814:18#59
UncleMike
> Не учитываю, в задании не сказано, чтобы исключать пересекающиеся участки -
> aspam1982
> > разработать библиотеку для получения смещенного контура кривой на заданное
> > расстояние
Там не сказано - там нарисовано :-)
Страницы: 13 4 5 614 Следующая »

/ Форум / Работа / Разовая работа

2001—2018 © GameDev.ru — Разработка игр