Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Diana081
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 32
1

Алгоритм CDA для построения отрезка

09.12.2011, 20:09. Просмотров 1940. Ответов 10
Метки нет (Все метки)

Программа есть, но при её запуске происходит какая-то системная ошибка. Не могу разобраться в чем дело
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
procedure TForm1.Button1Click(Sender: TObject);
var l,i,xst,yst,xend,yend:integer;
    dx,dy,x1,y1,y2,x2: real;
    x,y: array[1..300] of  real;
    xn,yn: array[1..300] of integer;
begin
  x1:=StrToFloat(Edit1.Text);
  y1:=StrToFloat(Edit2.Text);
  x2:=StrToFloat(Edit3.Text);
  y2:=StrToFloat(Edit4.Text);
 
  xst:=round(x1);  yst:=round(y1);
  xend:=round(x2);  yend:=round(y2);
 
  l:=max(abs(xend-xst),abs(yend-yst));
  dx:=(x2-x1)/l; dy:=(y2-y1)/l;
 
  i:=0;
  x[i]:=x1;
  y[i]:=y1;
  i:=i+1;
 
  while (i<l) do begin
    x[i]:=x[i-1]+dx;
    y[i]:=y[i-1]+dy;
    i:=i+1;
  end;
 
  x[i]:=x2;
  y[i]:=y2;
  i:=0;
 
  while(i<=l) do begin
    xn[i]:=round(x[i]); yn[i]:=round(y[i]);
    canvas.Pixels[xn[i],yn[i]]:=clBlack;
    i:=i+1;
  end;
end;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2011, 20:09
Ответы с готовыми решениями:

Требуется программа для построения отрезка по двум точкам на плоскости ХОУ и далее, из одного из концов построенного отрезка построить второй отрезок
Требуется программа для построения отрезка по двум точкам на плоскости ХОУ и далее, из одного из...

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

Алгоритм для построения меню снизу вверх
Ребята, помогите! Знаю, что это несложно, но почему-то сижу над этим вопросом очень долго. Надо...

Алгоритм Прима для построения максимального дерева
Алгоритм Прима.С++

Разработать алгоритм и составить программу для построения на экране изображения
Разработать алгоритм и составить программу для построения на экране изображения В качестве...

10
deathNC
1894 / 1005 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
13.12.2011, 12:44 2
Diana081, код только на кнопку выложил. А где код обработчика события, которое возникает при запуске?
1
Diana081
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 32
14.12.2011, 18:03  [ТС] 3
Непоняла? п.с. программа заработала на другом компьютере. не знаю почему
0
deathNC
1894 / 1005 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
15.12.2011, 03:30 4
Diana081, я про то, что тут не вся программа выложена.
А на другом компьютере по разным причинам может не работать.

Не по теме:

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

0
15.12.2011, 03:30
Diana081
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 32
15.12.2011, 17:59  [ТС] 5
deathNC, ну да.. чего только не бывает. вот полностью код, если интересно
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var l,i,xst,yst,xend,yend:integer;
    dx,dy,x1,y1,y2,x2: real;
    x,y: array[1..300] of  real;
    xn,yn: array[1..300] of integer;
begin
  x1:=StrToFloat(Edit1.Text);
  y1:=StrToFloat(Edit2.Text);
  x2:=StrToFloat(Edit3.Text);
  y2:=StrToFloat(Edit4.Text);
 
  xst:=round(x1);  yst:=round(y1);
  xend:=round(x2);  yend:=round(y2);
 
  l:=max(abs(xend-xst),abs(yend-yst));
  dx:=(x2-x1)/l; dy:=(y2-y1)/l;
 
  i:=0;
  x[i]:=x1;
  y[i]:=y1;
  i:=i+1;
 
  while (i<l) do begin
    x[i]:=x[i-1]+dx;
    y[i]:=y[i-1]+dy;
    i:=i+1;
  end;
 
  x[i]:=x2;
  y[i]:=y2;
  i:=0;
 
  while(i<=l) do begin
    xn[i]:=round(x[i]); yn[i]:=round(y[i]);
    canvas.Pixels[xn[i],yn[i]]:=clBlack;
    i:=i+1;
  end;
end;
 
end.
0
deathNC
1894 / 1005 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
16.12.2011, 02:48 6
Цитата Сообщение от Diana081 Посмотреть сообщение
при её запуске происходит какая-то системная ошибка.
При запуске программы или при клику по Buton1 ??
Если пи запуске, то заархивируй папку с проектом и выкладывай сюда. Мне уже стало интересно.
0
Diana081
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 32
16.12.2011, 16:28  [ТС] 7
deathNC, сори. при нажатии на кнопку
0
yamilramilev
267 / 258 / 47
Регистрация: 08.10.2009
Сообщений: 554
16.12.2011, 21:15 8
Canvas.Pixels[xn[i],yn[i]]:=clBlack;
вот в этой строке видимо происходит выход за границы массива.
0
Diana081
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 32
17.12.2011, 17:18  [ТС] 9
yamilramilev, может быть. )

Тот же алгоритм, но написанный на C# работает без ошибок абсолютно)
0
yamilramilev
267 / 258 / 47
Регистрация: 08.10.2009
Сообщений: 554
17.12.2011, 17:48 10
нашел ошибку:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var 
    x,y: array[1..300] of  real; // массив надо начинать с  нуля
   xn,yn: array[1..300] of integer;
...
i:=0;
  x[i]:=x1;
  y[i]:=y1;
...
i:=0; 
  while(i<=l) do begin
    xn[i]:=round(x[i]); yn[i]:=round(y[i]);
    canvas.Pixels[xn[i],yn[i]]:=clBlack;
1
Diana081
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 32
17.12.2011, 18:31  [ТС] 11
yamilramilev, Спасибо)
0
17.12.2011, 18:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2011, 18:31

Разработать алгоритм и составить программу для построения на экране изображения
Разработать алгоритм и составить программу для построения на экране изображения В качестве...

Разработать алгоритм и составить программу для построения на экране изображения
Разработать алгоритм и составить программу для построения на экране изображения

Разработать алгоритм и составить программу для построения на экране изображения
Разработать алгоритм и составить программу для построения на экране изображения В качестве...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru