Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
ВнизПомогите теорией. Полигон по направляющей полилинии. Найти похожие ветки
← →
Knight © (2009-06-15 10:02) [0]Как построить полигон по направляющей полилинии с заданным отступом от неё с обоих сторон (аля дорога) ?
← →
oldman © (2009-06-15 10:14) [1]Линия ломаная или плавная?
Если ломаная - делим на отрезки, проводим перпендикуляры, отмеряем отступ, строим полигон.
← →
Как-то так (2009-06-15 10:17) [2]Используй векторное произведение - CrossVector
← →
Как-то так (2009-06-15 10:18) [3]aka Cross product
← →
Knight © (2009-06-15 10:19) [4]Ломаная. А на стыках как? И можно ли это как-то проще строить... типа матриц?
← →
oldman © (2009-06-15 10:26) [5]
> Knight © (15.06.09 10:19) [4]
> Ломаная. А на стыках как?
А на стыках само пересечется.
← →
Knight © (2009-06-15 10:30) [6]Я так понимаю, что ширину полигона надо отмерять по перпендикулярам, а точки узлов располагать на биссектрисах...
← →
oldman © (2009-06-15 11:23) [7]
> Knight © (15.06.09 10:30) [6]
Точки узлов найдутся сами собой
..........................
________________ .
........................ \ .
. \ .
. \ .
← →
Knight © (2009-06-15 12:01) [8]Надо вариант второй - нижний
http://dreams-digitizer.ru/files/Poligon.jpg
← →
boa_kaa © (2009-06-15 12:06) [9]с отступом уже объяснили, получаешь уравнения прямых, а затем ищешь точки пересечения
← →
MBo © (2009-06-15 13:52) [10]Нечто подобное нужно?
procedure TForm2.Button23Click(Sender: TObject);
var
pn: THandle;
lb: TLogBrush;
begin
lb.lbStyle := BS_SOLID;
lb.lbColor := clRed;
pn := ExtCreatePen(PS_GEOMETRIC or PS_ENDCAP_SQUARE or PS_JOIN_MITER, 30, lb, 0, Nil);
Canvas.Pen.Handle := pn;
SetMiterLimit(Canvas.Handle, 2, Nil);
BeginPath(Canvas.Handle);
Canvas.Polyline([Point(100, 100), Point(200, 100), Point(300, 200), Point(400, 150)]);
EndPath(Canvas.Handle);
WidenPath(Canvas.Handle);
Canvas.Pen.Color := clBlack;
Canvas.Pen.Width:= 1;
StrokePath(Canvas.Handle);
Canvas.Polyline([Point(100, 100), Point(200, 100), Point(300, 200), Point(400, 150)]);
end;
Если нужно описание полученного полигона, то GetPath
← →
Sapersky (2009-06-15 13:57) [11]см. Graphics32
← →
Knight © (2009-06-15 15:39) [12]
> MBo © (15.06.09 13:52) [10]
а почему там какие-то петли внутри?
← →
MBo © (2009-06-15 15:48) [13]>а почему там какие-то петли внутри?
криво работает WidenPath (Фень Юань в своей книжке это отмечает).
Если нет сложных мест (например, омега-образных петель размера меньшего ширины отступа), то по совету oldman-а все нормально получится, и не слишком сложно
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c