Как представить гладкий путь, данный ряд точек данных?

Некоторые примеры:

Round(1.5) = 2
Round(2.5) = 2
Round(1.5, MidpointRounding.AwayFromZero) = 2
Round(2.5, MidpointRounding.AwayFromZero) = 3
Round(1.55, 1) = 1.6
Round(1.65, 1) = 1.6
Round(1.55, 1, MidpointRounding.AwayFromZero) = 1.6
Round(1.65, 1, MidpointRounding.AwayFromZero) = 1.7

Truncate(2.10) = 2
Truncate(2.00) = 2
Truncate(1.90) = 1
Truncate(1.80) = 1
5
задан Rich 3 August 2009 в 18:52
поделиться

4 ответа

Возможно, вы захотите взглянуть на кривые Безье или кривые Эрмита , их не так сложно вычислить, и вы получите красивые мягкие кривые.

1
ответ дан 14 December 2019 в 19:21
поделиться

Возможно, вам стоит проверить Кривые Безье и Сплайны алгоритмы.

1
ответ дан 14 December 2019 в 19:21
поделиться

Есть функция CoreGraphics под названием «CGPathAddQuadCurveToPoint», которая используется для рисования плавных путей. Пример использования находится на GitHub .

3
ответ дан 14 December 2019 в 19:21
поделиться

" Комментарии к документации XML (Руководство по программированию на C #) В Visual C # вы можете создать документацию для своего кода, включив теги XML в специальные поля комментариев в исходном коде непосредственно перед блоком кода, на который они ссылаются. "

http://msdn.microsoft.com/en-us/library /b2s063f7.aspx

затем вы можете использовать Sandcastle для генерации файлов chm, если хотите

http://www.hanselman.com/blog/SandcastleMicrosoftCTPOfAHelpCHMFileGeneratorOnTheTailsOfTheDeathOfNDoc.aspx

-121 --- 14129 ] _cancelled должен быть volatile . (если вы не выбрали блокировку)

Если один поток изменяет значение _cancelled , другие потоки могут не видеть обновленное результат.

Кроме того, я думаю, что операции чтения / записи _cancelled являются атомарными :

Раздел 12.6.6 спецификации CLI гласит: "Соответствующий интерфейс командной строки должен гарантировать, что доступ для чтения и записи к правильному выровненные ячейки памяти не больше чем исходный размер слова атомарен когда все записи обращаются к При рисовании пунктирных линий вы можете изменять расстояние между штрихами, чтобы убедиться, что у вас никогда не будет частичных четырехугольников на конечных точках. Это может визуально отвлекать, так как расстояние будет регулироваться в зависимости от длины сегмента.

edit:

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

Алгоритм будет примерно таким:

  1. Нарисовать четырехугольник на первой точке данных (с соответствующим поворотом)
  2. Перемещайтесь по списку точек, пока не « re не менее X расстояния от последней точки
  3. Lerp между текущей точкой и последней посещенной точкой, чтобы найти точный центр для размещения следующего четырехугольника.
  4. Нарисуйте четырехугольник (повернутый соответствующим образом)
  5. Перейти к шагу 2
  6. Если у вас есть частичная точка для последнего четырехугольника, нарисуйте ее как обычно (это даст лучшую визуализацию, чем ее усечение).

Ради интереса, перемещаться между двумя точками на некотором расстоянии D, которое меньше расстояния между двумя точками (это, вероятно, проще в случае 2D, но мне нравится работать в целом):

vector v = point2 - point1;
normalize(v);
v *= D;
finalPoint = point1 + v;
0
ответ дан 14 December 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: