Показать сообщение отдельно
Старый 26.07.2010, 20:40   #5
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: Lib_bezier - Рисование кривой Безье

Интересная либа, решил переписать на MP:
procedure drawBezier(x1,y1,x2,y2,x3,y3,count : integer);
var
  i,j,x,y,xx,yy : integer;
begin
  x := x1;
  y := y1;
  for i := 0 to count do
  begin
    j := count-i;
    xx := ((x1 * j * j) + (x2 * 2 * i * j) + (x3 * i * i)) div (count*count);
    yy := ((y1 * j * j) + (y2 * 2 * i * j) + (y3 * i * i)) div (count*count);
    drawLine(x,y,xx,yy);
    x := xx;
    y := yy;
  end;
  drawLine(x,y,x3,y3);
end;


var
  x1, x2, x3, y1, y2, y3: integer;
begin
  // Задаем точки для нормалей
  x1:=0; y1:=0;
  x2:=100; y2:=50;
  x3:=10; y3:=150;
  // Рисуем нормали - так, для прикола
  setColor(200, 200, 200);
  drawLine(x1, y1, x2, y2);
  drawLine(x2, y2, x3, y3);
  setColor(255, 0, 0);
  // Рисуем кривую Безье
  drawBezier(x1, y1, x2, y2, x3, y3,30);
  // Перерисовка экрана и ждем 10 сек
  repaint;
  delay(10000);
end.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо abcdef за это полезное сообщение:
psih1 (26.07.2010), sidav (30.07.2010)