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.331
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.331
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
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 15:55:13.


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