![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна информация по сглаживанию линий [D5, Win95/98]
Mihey_temporary © (2004-09-01 23:19:00)Нужно реализовать сглаживание линий. Нужны именно алгоритмы или реализации с исходным кодом дабы можно было переделать под конкретный случай.
Mihey_temporary (2004-09-04 20:59:00) [1]Так, спасибо, будем пробовать.
Рыба (2004-09-04 20:06:00) [2]
procedure DrawCubicCurve(Canvas: TCanvas; const Points: array of TPoint; Steps: cardinal);
function Interpolate(const p1, p2, p3, p4: TPoint; t: single): TPoint;
function cubic(v1, v2, v3, v4, t: single): single;
begin
result:= v2 + t*((-v1 + v3) +
t*((2*v1 - 2*v2 + v3 - v4) +
t*(-v1 + v2 - v3 + v4)));
end;
begin
Result.x:= round(cubic(p1.x, p2.x, p3.x, p4.x, t));
Result.y:= round(cubic(p1.y, p2.y, p3.y, p4.y, t));
end;
var
i, s: integer;
p, p1, p2, p3, p4: TPoint;
begin
if Length(Points) < 2 then
exit;
Canvas.MoveTo(Points[0].x, Points[0].y);
p2:= Points[0];
p3:= Points[0];
p4:= Points[1];
for i:= 0 to High(Points)-1 do
begin
p1:= p2;
p2:= p3;
p3:= p4;
if i+2 < Length(Points) then
p4:= Points[i+2];
for s:= 1 to Steps do begin
p:= Interpolate(p1, p2, p3, p4, s / Steps);
Canvas.LineTo(p.x, p.y);
end;
end;
end;
Бери Steps > 2.
wicked (2004-09-04 01:52:00) [3]то есть нужны сплайны?....
PolyBezier подойдет?...
Mihey_temporary (2004-09-03 18:25:00) [4]up
Mihey_temporary (2004-09-02 16:10:00) [5]Спасибо за ссылки, весьма интересные источники ты берёшь. Но боюсь, что я не правильно выразился.
Мне нужно скруглить, сгладить, сделать более плавной некоторую кривую или ломаную - вот, что я имел ввиду :). Пока что линия не представлена никак, с этим я также буду разбираться, но всё это значит, что подойдут самые разные алгоритмы.
MBo (2004-09-02 07:15:00) [6]http://www.antigrain.com/
http://www.cs.wpi.edu/~matt/courses/cs563/talks/antialiasing/methods.html
efg тебе известно.
http://www.google.ru/groups?hl=ru&lr=&ie=UTF-8&group=borland.public.delphi.graphics
http://www.google.ru/groups?hl=ru&lr=&ie=UTF-8&group=comp.graphics.algorithms
http://www.simdesign.nl/tips/tip002.html
И поищи Graphics Gems, 1 том.