Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   graficacion (https://www.clubdelphi.com/foros/showthread.php?t=33042)

pattyka 26-06-2006 01:58:55

graficacion
 
laguien podria ayudarme...?? lo que pasa es que hice el algorittmo DDA y cuando le doy valores iguales marca error y no se como sacarlo:confused:

marcoszorrilla 26-06-2006 06:57:56

Pues, sino muestras tu código, es dificil que alguien pueda ayudarte.

Un Saludo.

pattyka 26-06-2006 08:16:04

Este codigo es el que tengo del algoritmo DDA:

Código Delphi [-]
procedure line(x1,y1,x2,y2:integer);
Var
   dx,dy,steps,i:integer;
  xIncrement,yIncrement,x,y:real;
Begin
  dx:=x2-x1;
  dy:=y2-y1;
  if abs (dx) > abs (dy) then
      steps:=abs(dx)
  else
      steps:=abs(dy);
   xIncrement:=dx/steps;
   yIncrement:=dy/steps;
   x:=x1;
   y:=y1;
   form1.PaintBox1.Canvas.Pixels[round(x), round(y)]:=4;
   for i:=1 to steps do
   begin
       x:=x+xIncrement;
       y:=y+yIncrement;
       form1.PaintBox1.Canvas.Pixels[round(x), round(y)]:=4;
   end;
   form1.PaintBox1.Canvas.Pixels[round(x), round(y)]:=4;
End;

Espero me puedas ayudar...;)

seoane 26-06-2006 11:04:22

A simple vista, si el valor de x1=x2 y y1=y2 steps seria igual a cero, lo que origina una division por cero (supongo que ese es el error). Supongo que con una comprobacion antes de hacer la division seria suficiente.

Código Delphi [-]
procedure line(x1,y1,x2,y2:integer);
Var
   dx,dy,steps,i:integer;
  xIncrement,yIncrement,x,y:real;
Begin
  dx:=x2-x1;
  dy:=y2-y1;
  if abs (dx) > abs (dy) then
      steps:=abs(dx)
  else
      steps:=abs(dy);
  x:=x1;
  y:=y1;
  form1.PaintBox1.Canvas.Pixels[round(x), round(y)]:=4;
  // Si steps = 0 no hay nada mas que hacer asi que salimos
  if steps = 0 then Exit;  
  xIncrement:= dx/steps;
  yIncrement:= dy/steps; 
  for i:=1 to steps do
   begin
       x:=x+xIncrement;
       y:=y+yIncrement;
       form1.PaintBox1.Canvas.Pixels[round(x), round(y)]:=4;
   end;   
End;

pattyka 26-06-2006 17:10:15

Claro... como no se me ocurrio antes:( ... gracias Seoane;) ...

pattyka 26-06-2006 17:17:36

Oo ... el caso es que tengo que cachar ese error y validarlo para que sea igual a 0... y a los valores de la pendiente tengo que restarles 1 cada vez que la pendiente sea igual 0... (bueno una vez validado el error)...umm me explique?? esque ya me enrrolle toda:(


La franja horaria es GMT +2. Ahora son las 04:18:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi