0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
1

Алгоритм Брезенхема для 3-х координат

23.03.2015, 15:15. Показов 1103. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть алгоритм Брезенхема для построения прямой по двум координатам, а я хочу сделать по трём координатам( x y z )
"графическое иллюстрирование" не нужно, главное сам корректный перебор наборов координат для каждой точки прямой. Помогите, подскажите, мб это вообще не корректно и нужно использовать другой алгоритм...
а вообще наверняка уже готовые есть(гуглил не нашел).
и подскажите по подробней о величине o:=2*dy-dx; зачем она и почему именно такая...
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
procedure TForm1.Button1Click(Sender: TObject);
var
    x1,x2,y1,y2,dx,dy,s1,s2,x,y,o,i,v,obmen   : integer;
begin
  x1:=strtoint(edit1.Text);
  y1:=strtoint(edit2.Text);
  x2:=strtoint(edit3.Text);
  y2:=strtoint(edit4.Text);
  x:=x1;
  y:=y1;
  dx:=(abs(x2-x1));
  dy:=(abs(y2-y1));
  if (x2-x1)<=0 then s1:=-1 else s1:=1;
  if (y2-y1)<=0 then s2:=-1 else s2:=1;
  if dy>dx then
  begin
    v:=dx;
    dx:=dy;
    dy:=v;
    obmen:=1;
  end
  else obmen:=0;
  o:=2*dy-dx;
  for i := 1 to dx do
  begin
    form1.Canvas.Pixels[x,y]:=clBlack;
    while o>=0 do
    begin
      if obmen=1 then
      x:=x+s1
      else
        y:=y+s2;
      o:=o-2*dx;
    end;
    if obmen=1 then y:=y+s2
    else x:=x+x1;
    o:=o+2*dy;
  end;
  
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2015, 15:15
Ответы с готовыми решениями:

Алгоритм Брезенхема
Написал процедуру, отрезок отлично рисуется в 1 октанте, в 8 октанте не хочет. В чем может быть...

Алгоритм Брезенхема для окружности
Здравствуйте, есть задание - Выполнить отрисовку окружностей радиусов 3*(R+9), 5*(R+9), 10*(R+9)...

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

Алгоритм Брезенхема для генерации окружности
Очень срочно, пожалуйста Нужно для матлаба

2
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
24.03.2015, 19:21  [ТС] 2
там такого нет, всё одно и то же.
Пытаюсь модифицировать Брезенхейма( ввёл oz и оперирую им) что то не получается логики... помогите)
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
var
    z1,z2,x1,x2,y1,y2,dx,dy,dz,s1,s2,s3,x,y,z,o,oz,i,v,obmen   : integer;
begin
  memo1.Clear;
  x1:=strtoint(edit1.Text);
  y1:=strtoint(edit2.Text);
  x2:=strtoint(edit3.Text);
  y2:=strtoint(edit4.Text);
  z1:=strtoint(edit5.Text);
  z2:=strtoint(edit6.Text);
  x:=x1;
  y:=y1;
  z:=z1;
  dx:=(abs(x2-x1));     
  dy:=(abs(y2-y1));
  dz:=(abs(z2-z1));
  if (x2-x1)<=0 then s1:=-1 else s1:=1;   
  if (y2-y1)<=0 then s2:=-1 else s2:=1;
  if (z2-z1)<=0 then s3:=-1 else s3:=1;
  if dy>dx then        
  begin
    v:=dx;
    dx:=dy;
    dy:=v;
    obmen:=1;    
  end
  else obmen:=0;
  o:=2*dy-dx;
  oz:=2*dy-dz;
  for i := 1 to dx do
  begin
    memo1.lines.add(inttostr(x)+' '+inttostr(y)+' '+inttostr(z));
    form1.Canvas.Pixels[x+100,y+100]:=clBlack;
    while o>=0 do
      begin
        if obmen=1 then
          x:=x+s1
          else
          y:=y+s2;
        o:=o-2*dx;
 
      end;
    if obmen=1 then
      y:=y+s2
      else
      x:=x+s1;
    o:=o+2*dy;
 
   while oz>=0 do
   begin
         z:=z+s3;
         oz:=oz-2*dz;
   end;
 
  end;
 // form1.refresh;
 // self.Repaint;
end;
 
 
end.
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
29.03.2015, 19:34  [ТС] 3
извините за "ап" но неужели никто такого не делал или не знает готового решения?!(
и куда то пропало сообщение которое мне ответил модератор в этой темке...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2015, 19:34
Помогаю со студенческими работами здесь

Алгоритм Брезенхема для генерации окружности
Что-то не получается, кто может помочь? (Данный алгоритм также является целочисленным. В...

Алгоритм Брезенхема для генерации окружности C# OpenGl
Всем доброго времени суток. Возник очень важный вопрос. Как нарисовать круг по алгоритму Брезенхема...

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

[Code review] Алгоритм Брезенхема для линии
/* * Created by SharpDevelop. * User: 26-60-911 * Date: 13.08.2017 * Time: 20:58 * *...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru