Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2018
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 928
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Acá mas que una ayuda...
Código Delphi [-]
...

  type TPunto = record
       x,y: Double;
  end;

  type TSolucion = record
     Interseccion: Boolean; {Indica si las rectas se Intersectan}
     X,Y: Double; {Punto de Interseccion}
   end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function LineIntersection(A, B, C, D:TPunto):TSolucion;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{
Fuente https://www.geeksforgeeks.org/progra...-of-two-lines/

Adaptado a Delphi por mi...
}

function TForm1.LineIntersection(A, B, C, D:TPunto):TSolucion;
var
   a1, b1, c1, a2, b2, c2, det:double;
begin
      a1 := B.y - A.y;
      b1 := A.x - B.x;
      c1 := a1*(A.x) + b1*(A.y);

      a2 := D.y - C.y;
      b2 := C.x - D.x;
      c2 := a2*(C.x)+ b2*(C.y);

      {Calculo del derminante}
      det := a1*b2 - a2*b1;

      {Si det=0, son rectas paralelas}
      Result.Interseccion:=(det <> 0);
      Result.x:=-1;
      Result.y:=-1;

      if Result.Interseccion then
      begin
           {Calcula el punto de intercepción}
           Result.x := (b2*c1 - b1*c2)/det;
           Result.y := (a1*c2 - a2*c1)/det;
      end;
end;

//****************************************************************************//
// Determines if two lines intersect.                                         //
//****************************************************************************//
procedure TForm1.Button1Click(Sender: TObject);
 var
     A, B, C, D:TPunto;
     solucion:TSolucion;
 begin
      {Recta 1}
      A.X:=1; A.Y:=2;
      B.X:=4; B.Y:=5;

      {Recta 2}
      C.X:=2; C.Y:=4;
      D.X:=5; D.Y:=4;

      Solucion:=LineIntersection(A, B, C, D);

      if not Solucion.Interseccion then
         Showmessage('Rectas paralelas ')
      else
         ShowMessage(format('Las rectas de intersectan en el punto (%f,%f)',[Solucion.X, Solucion.Y]));
end;

end.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
En 2 líneas DenisDiaz Impresión 7 09-01-2013 17:27:55
Realizar Join entre n1 líneas de una tabla y n2 líneas de otra tabla gluglu SQL 7 15-04-2011 20:33:19
Detectar USB mefixxto API de Windows 6 31-12-2010 20:14:27
Cruce de datos kemequemo Varios 1 19-01-2009 13:06:38
Lineas en TXT joanajj Varios 5 05-11-2004 21:09:06


La franja horaria es GMT +2. Ahora son las 22:30:34.


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
Copyright 1996-2007 Club Delphi