Помогите с подключенными очертаниями - PullRequest
0 голосов
/ 17 июля 2010

Я делаю приложение для векторного рисования.Я использую этот алгоритм для генерации контуров.

Этот алгоритм работает хорошо, за исключением того, что он не закрывает контур, как показано здесь: альтернативный текст http://img716.imageshack.us/img716/2633/noclosure.png

Я не уверен, что мне следует делатьчтобы он всегда закрывал контур.Я попытался вставить последнюю вершину в позиции [0] в std :: vector, но это не помогло.

DOUBLEPOINT выглядит так:

struct DOUBLEPOINT {
double point[2];
};

Как я могу сделать так, чтобы это всегдаправильно закрывает фигуру даже на острых углах?

Спасибо

Ответы [ 3 ]

1 голос
/ 17 июля 2010

Я обычно просто использую модуль :

nxt = input[(i+1) % input.size()];
1 голос
/ 17 июля 2010

Попробуйте добавить копию первой и второй точек в конец вектора, прежде чем наносить его на график.Ваш первый и последний отрезок линии будут перекрываться, но это должно гарантировать, что все точки соединены и все углы округлены одинаково.

1 голос
/ 17 июля 2010

Как насчет:

for( size_t i = 0; i < input.size(); ++i )
{
    POINTFLOAT cur;
    POINTFLOAT nxt;

    if( i == input.size() - 1 )
    {
       cur.x = input[i].point[0];
       cur.y = input[i].point[1];

       nxt.x = input[0].point[0];
       nxt.y = input[0].point[1];
    }
    else
    {
       cur.x = input[i].point[0];
       cur.y = input[i].point[1];

       nxt.x = input[i+1].point[0];
       nxt.y = input[i+1].point[1];
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...