Algoritmos Heurísticos de Cobertura de Arcos
Algoritmos Heurísticos de Cobertura de Arcos
Algoritmos Heurísticos de Cobertura de Arcos
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
M,N,NL,NC,MA,ME:Integer;<br />
BotaoAcionado:Integer;<br />
Velocida<strong>de</strong>,VelInversa: Integer;<br />
Falha: Boolean;<br />
Const MaxLink = 2000;<br />
MaxRota = 2400;<br />
MaxNo = 1000;<br />
Function Delay(N:Integer):Real;<br />
Var x:Real;<br />
i,j:Integer;<br />
Begin<br />
X:=1.0;<br />
For i:=1 to 1*N do<br />
For j:=1 to 100+CompArco do<br />
x:=x+0.000001;<br />
Result:=x;<br />
End;<br />
Procedure CriaNo(x,y:Integer;PaintBox1:TPaintBox);<br />
// Desenha um nó do grafo, com as coor<strong>de</strong>nadas dadas<br />
begin<br />
PaintBox1.Canvas.Pen.Width:=PenaDiag;<br />
PaintBox1.Canvas.Pen.Color:=clMaroon ;<br />
PaintBox1.Canvas.Ellipse(x-Raio,y-Raio,x+Raio,y+Raio);<br />
end;<br />
Procedure CriaAresta(x1,y1,x2,y2:Integer;PaintBox1:TPaintBox);<br />
// Desenha uma aresta original do grafo, com as coor<strong>de</strong>nadas dadas<br />
begin<br />
PaintBox1.Canvas.Pen.Width:=PenaDiag;<br />
//PaintBox1.Canvas.Pen.Color:=8400000;<br />
PaintBox1.Canvas.Pen.Color:=40000;<br />
If (x1 = x2) or (y1 = y2)<br />
Then PaintBox1.Canvas.Pen.Width:=PenaNormal;<br />
PaintBox1.Canvas.MoveTo(x1,y1);<br />
PaintBox1.Canvas.LineTo(x2,y2);<br />
end;<br />
Procedure CriaArco(x1,y1,x2,y2:Integer;PaintBox1:TPaintBox);<br />
// Desenha um arco original do grafo, com as coor<strong>de</strong>nadas dadas<br />
var i,xs,ys,dx,dy,LargSeta: Integer;<br />
ponto1x,ponto2x,ponto3x,ponto1y,ponto2y,ponto3y:Integer;<br />
begin<br />
PaintBox1.Canvas.Pen.Width:=PenaDiag;<br />
PaintBox1.Canvas.Pen.Color:=40000;<br />
//PaintBox1.Canvas.pen.Style := psClean; Limpa a linha existente<br />
If (x1 = x2) or (y1 = y2)<br />
Then PaintBox1.Canvas.Pen.Width:=PenaNormal;<br />
PaintBox1.Canvas.MoveTo(x1,y1);<br />
PaintBox1.Canvas.LineTo(x2,y2);<br />
xs:=Round((x2-x1)*0.85)+x1;<br />
dx:=Round((x2-x1)/Abs(x2-x1+0.1));<br />
dy:=Round((y2-y1)/Abs(y2-y1+0.1));<br />
ys:=Round((y2-y1)*0.85)+y1;<br />
LargSeta:=Round(0.02*Sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+0.0));<br />
If dx*dy=0 Then<br />
begin<br />
xs:=Round((x2-x1)*0.80)+x1;<br />
ys:=Round((y2-y1)*0.80)+y1;<br />
LargSeta:=Round(2*LargSeta);<br />
end;<br />
161