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 02-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Se podria saber la longitud de una linea pintada( con curvas).

Muy buenas, llevo mucho tiempo dandole vueltas y no se por donde tirar, os lo comento y a ver si me podeis aconsejar algo . Estoy haciendo una aplicacion en la que tengo una serie de "carreteras", imaginaos que tengo un circuito dibujado, y me gustaria saber como puedo hacer para saber en cada momento en que parte del circuito estoy, me explico, si la meta es el punto cero (0 m), si avanzo un poco estoy en el metro ¿?, ¿se podria calcular la longitud de la linea de este dibujo (que tiene curvas) y dividirla sabiendo la distancia total y asignarle algun valor a cada punto de esta linea??.

Esa es mi pregunta, podria asignarle de alguna manera una escala al tamaño de la linea que representa el circuito(carretera),para saber en cada momento en que metro real de esa carretera estoy o seria mejor tener una imagen con ese circuito (carretera) o algun componente que dibuje las lineas y sea capaz de hacer esto que digo. Muchas gracias por su tiempo, ando perdido.

P.D: si en delphi no se pudiese realizar esto, con que se podria? se podria incluir en un programa delphi.
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #2  
Antiguo 02-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, no se nada de esto, pero se me ocurren un par de cosas (no se estaré diciendo barbaridades); Creo que necesitas dos cosas fundamentales:
(1) Para calcular distancias, yo dividiría el trazado en segmentos rectos (pequeñas líneas); Es como si "redibujaras" el circuito, pero sólo utilizando pequeñas líneas rectas; Cuanto más pequelños sean los segmentos, más "afinada" será la medición.
(2) Necesitas saber de forma exacta la escala de tu dibujo respecto a la realidad; Con eso podrás saber la distancia real a la que corresponde uno de tus "segmentos" y en consecuencia, sumando segmentos, obtendrás distancias reales.

Es sólo una idea, a ver si alguien aporta alguna cosa más...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 02-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Gracias netfali por intentar ayudarme, ahora mi pregunta seria como dibujo esos segementos? con el componente que una vez me recomendaste simplegraph (se podria? no me aclaro con el componente :$) o con el canvas de un timage? cual seria la mejor opcion para esto ? y que tamaño tendria que tener esas lineas (¿3 pixels?). Muchas gracias otra vez siempre estas ahi echando un mano.
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #4  
Antiguo 02-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La verdad es que he dado unas ideas, porque tampoco acabo de ver claro qué es lo que tienes que hacer. No acabo de saber bien qué es lo que estás haciendo; No entiendo el programa en sí, sólo has señalado un aspecto concreto y darte consejos sobre cómo hacer las cosas sin saber bien qué tienes que hacer es peligroso, ya que te podemos orientar sobre un camino equivocado.

Hablas de un circuíto; ¿Lo dibujas tú? ¿Está ya dibujado? ¿Es una imagen estática, una foto, un BMP?

Hablas de dibujar segmentos, pero no se si debes dibujarlos tú a mano, si se deben calcular, si se deben dibujar automáticamente,...¿?¿?
Tal vez deberías explicar qué hace ese programa exactamente para saber de qué estamos hablando...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 02-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Voy a intentar ser claro.

Tengo una serie de circuitos (cheste, Monaco), los tengo en jpg, pero estaba mirando la posibilidad de dibujarlos yo con segmentos como tu dices ya que si no lo hago asi no sabria como hacer referencia a una distancia real en el circuito.

Los segmentos deberian dibujarse automaticamente (podria tener en una base de datos las coordenadas de cada punto y que al arrancar el programa automaticamente dibuje el circuito con estos segmentos) o hacer esto y que una vez realizado guarde ya el circuito en un jpg para su futuro uso, pero no se si se podria hacer esto en un timage, o con el componente simplegraph o con otro componente.

Creo que la mejor opcion seria dibujarlo, ya que asi tambien elijo el grosor de la linea y color entre otras cosas; de la otra forma tengo que depender de la imagen (jpg) y ademas, no tengo todos los circuitos iguales por lo que no podria crear una escala. Espero que ahora si me puedas ayudar.

Cualquier otro dato necesites pregunta , muchas gracias.
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?

Última edición por Acanol fecha: 02-06-2006 a las 11:10:29.
Responder Con Cita
  #6  
Antiguo 02-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Retomando la idea de dividir el circuito en segmentos:

Puedes tener una imagen con la foto del circuito toda bonita y luego otra que te servira como mapa, no recuerdo ahora el nombre pero no hace mucho alguien mencionara por aqui un juego echo en delphi (racing noseque ) este tenia imagenes jpg de los ciruitos y luego unos mapas donde le indicaba que era pista, que era tierra, etc.

Aqui te dejo un ejemplo (un poco chapuzero ) de como medir distancia, se definen los segmentos por un array de puntos. Al mover el raton sobre el circuito te dira en que segmento estas, la distancia al inico y final del segmento, y la distancia al inicio del segmento si hubiesemos seguido una trayectoria recta. Todo pura geometria Espero que te sirva para empezar ...
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo24.zip (4,1 KB, 33 visitas)
Responder Con Cita
  #7  
Antiguo 02-06-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Neftali
(1) Para calcular distancias, yo dividiría el trazado en segmentos rectos (pequeñas líneas); Es como si "redibujaras" el circuito, pero sólo utilizando pequeñas líneas rectas; Cuanto más pequelños sean los segmentos, más "afinada" será la medición.
¡Genial! La base del Cálculo Integral en unas cuantas palabras

// Saludos
Responder Con Cita
  #8  
Antiguo 02-06-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Lightbulb alguna idea más

Hola

Lo de dividir el circuito en segmentos es lo mejor que se puede hacer. En Dibujo Técnico lo llamamos "rectificación de una curva cualquiera". La longitud que se haya es solamente aproximada, pero creo que para lo que quieres sirve.

No obstante, si pudieras comprobar que las curvas son parte de una circunferencia, pues podrías hacer una rectificación de un arco de circunferencia, que es más exacto y más fácil: tan solo necesitas el radio de la circunferencia, el ángulo del arco, y el famoso y mágico pi (3.1415926535...).

Espero que te sea de ayuda.

Saludos a todos
Responder Con Cita
  #9  
Antiguo 03-06-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
hhhhhhhhhhhmmmmmmmmmmm bueno....empecemos...
Neftali:
Cita:
(2) Necesitas saber de forma exacta la escala de tu dibujo respecto a la realidad; Con eso podrás saber la distancia real a la que corresponde uno de tus "segmentos" y en consecuencia, sumando segmentos, obtendrás distancias reales.
Yes, aunqe mejor se trabaje la gráfica al final...lo q importa son las distancias reales.
Román:
Cita:
Cita:
Originalmente Escrito por Neftali
(1) Para calcular distancias, yo dividiría el trazado en segmentos rectos (pequeñas líneas); Es como si "redibujaras" el circuito, pero sólo utilizando pequeñas líneas rectas; Cuanto más pequelños sean los segmentos, más "afinada" será la medición.


¡Genial! La base del Cálculo Integral en unas cuantas palabras
Por ahí va la cosa..
Teniendo los puntos de la curva (real, escala real!) o mejor aún la función q genere esa gráfica, puedes sacar la longitud casi exacta (por no decir exacta) de ese trayecto mediante Longitud de arco, teniendo la función haces la integral desde "a" hasta "b" de la raíz de 1+ el cuadrado del diferencial de f(x)...esto es..
Intgrl(sqrt(1+Dif(f(x))^2),a,b).....
Si tienes solo puntos.....entonces puedes formar una función algebráica con el polinomio interpolante de Lagrange, formar una función q derive a una algebráica es pan comido, en cuanto a la integral puedes usar varios métodos como trapecio, simpson, no recuerdo en este momento otros, (algún forero q me refresq la memory ), ahora lo de la imagen es solo graficación, stretch, etc, lo importante es la escala.

AAaaaahhhh....Esto sirve!!
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
  #10  
Antiguo 04-06-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por OSKR
Román:

Por ahí va la cosa..
Teniendo los puntos de la curva (real, escala real!) o mejor aún la función q genere esa gráfica, puedes sacar la longitud casi exacta (por no decir exacta) de ese trayecto mediante Longitud de arco, teniendo la función haces la integral desde "a" hasta "b" de la raíz de 1+ el cuadrado del diferencial de f(x)...esto es..
Intgrl(sqrt(1+Dif(f(x))^2),a,b).....
Lo sé. Estudié matemáticas. La integral que mencionas es el límite (cuando la norma de la partición tiende a cero) del proceso de aproximar la longitud mediante segmentos rectilíneos.

// Saludos
Responder Con Cita
  #11  
Antiguo 04-06-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
Roman:
Cita:
Lo sé. Estudié matemáticas. La integral que mencionas es el límite (cuando la norma de la partición tiende a cero) del proceso de aproximar la longitud mediante segmentos rectilíneos.
Yo se q lo sabes , lo reflejaste en la 1° vez, lo q me interesa(ba) es(era) mostrar la manera de hacer el cálculo como el Cálculo Diferencial-Integral manda .
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
  #12  
Antiguo 05-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Disculpa por la ausencia

Muy buenas, me he pasado el fin de semana currando en otras cosas asi que no he tenido tiempo de ver el post, muchas gracias por su tiempo y sus ideas, en poder me pongo con esta parte del programa otra vez y les digo si me sirvio todo esto, he visto el ejemplo que pusiste seoane, seria algo asi, tngo que mirarlo detenidamente, muchas gracias a todos, si veo que no puedo solucionarlo con esto os pongo el codigo y vuelvo a esperar de vuestra ayuda, un saludo y Gracias otra vez.
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #13  
Antiguo 06-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Siguiendo con el ejemplo de seoane, aquí tienes una muestra de cómo guardar puntos sobre el circuito.
La idea:
A partir de una imagen de un circuito, sobre ella dibujas una serie de segmentos para definir el trazado (cada circuito -BMP- llevará asociado un -MAP- con los puntos definidos).
Una vez definidos se guardan y se recuperan.

Para calcular la distancia en un punto del circuito (y aquí volvemos a simple trigonometría) basta con:
(1) Saber en qué segmento está ese punto.
(2) Sumar la distancia de todos los segmentos desde el inicial hasta ese.

Descargar Fichero y RENOMBRARLO a ZIP (era demasiado grande ara adjuntarlo) o desde aquí.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 03-07-2006 a las 11:26:18.
Responder Con Cita
  #14  
Antiguo 06-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Gracias :)

Muy buenas Netfali, tu ejemplo es perfecto, en vez de realizar el trazado del circuito a mano, ¿se podria realizar automaticamente?

Supongo que si hacemos que vaya recorriendo por la linea negra... Tengo un par de preguntas, que es la extension .map? tengo un par de archivos que nunca he podido ver porque tienen esa extension.

Otra pregunta ¿de donde has sacado la imagen del circuito? ¿estan todos los circuitos del mundo en este tipo de imagenes? (me servirian), espero no causarte muchas molestias y de verdad te agradezco el tiempo que has dedicado.

He visto que en el codigo de la aplicacion que has modificado, comprueba si estas encima del circuito mirando el color, seria posible que una vez definido el circuito, en vez de comprobar el color se comprobasen las coordenadas, ¿no?
Espero poder utilizarlo en mi aplicacion.
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #15  
Antiguo 06-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Con el permiso de Neftali voy a responderte a alguna de tus dudas. La extension .map en este caso es un archivo de texto donde se guardar las coordenadas de los puntos. En otros caso puede contener lo que el programador crea oportuno.

En cuanto a lo de identificar si un punto esta o no en el circuito, pues el metodo es simple, con sus coordenadas vas a un archivo que actue como mapa, puede ser un bmp y identificar las zonas por colores o algun metodo similar.

Última edición por seoane fecha: 06-06-2006 a las 13:26:37.
Responder Con Cita
  #16  
Antiguo 06-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Gracias seoane por tu aclaracion, pero seria posible abrir un archivo con extension .map sin saber lo que contiene? es decir con que deberia abrir este archivo para poder ver su contenido, porque si contiene texto se podria abrir como un txt, y si contiene otro tipo de informacion?¿ (no se si esto sera posible)

P.D: me he dado cuenta que soy un pregunton xDD, pero esque me emociono cuando veo las cosas que se pueden hacer y quiero mas mas mas....
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #17  
Antiguo 06-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Puedes ver los bytes, pero si no conoces el formato del archivo de poco te puede servir. Este es un editor hexadecimal gratuito echo en delphi que te permitira abrir cualquier archivo y ver su contenido, pero solo eso, los bytes uno detras del otro.

PD: En esta pagina puedes encontrar el formato de muchos archivos, puede que te sea util en alguna ocasion

Última edición por seoane fecha: 06-06-2006 a las 13:39:59.
Responder Con Cita
  #18  
Antiguo 06-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Gracias le echare un vistazo.
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #19  
Antiguo 06-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Acanol
que es la extension .map? tengo un par de archivos que nunca he podido ver porque tienen esa extension.
Es un fichero de texto con las coordenadas (como ya te han dicho) y el .MAP me lo he inventado yo (como podría haberle puesto .TXT o .PTN o .CIR). No tiene nada que ver con otros ficheros MAP que puedas tener, que pueden ser de cualquier cosa.

Cita:
Empezado por Acanol
¿de donde has sacado la imagen del circuito? ¿estan todos los circuitos del mundo en este tipo de imagenes?
En éste caso y a modo de ejemplo ilustrativo, he utilizado imágenes de "MiniRacingOnLine"; Si está pensando utilizar esos circuítos en algun programa tal vez deberías pedir permiso.
Otra opción es buscarlo en la Web, que seguro que los encuentras todos (Montmeló, Jerez, Mónaco, Monza, Ímola, ...), e incluso puedes utilizar Google Earth.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #20  
Antiguo 06-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Acanol
¿se podria realizar automaticamente?
Si hubiera una pauta a seguir, pues sí; Como bien te ha dicho seoane, supongo que a partir de colores se podría intentar algo, pero eso ya no lo encuentro trivial; Puedes ser más sencillo en una imagen de éste tipo, pero bastante más complejo en una más realista (como la del ejemplo).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 06-06-2006 a las 14:10:53.
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
Gráfica de curvas lfidanza Gráficos 4 09-09-2010 04:42:05
como saber la linea en la que está el cursos en un TMemo aranel OOP 3 17-10-2005 22:33:47
como saber numero de linea, nombre de archivo,funcion por codigo orfeo OOP 0 30-07-2004 18:42:15
Tmemo Index(saber en que linea estoy) Descendents OOP 2 12-12-2003 19:51:48
Saber índice de la línea en la que está el cursor en un Memo fortran OOP 2 06-08-2003 17:12:10


La franja horaria es GMT +2. Ahora son las 09:26:11.


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