Delphi - Ayuda sobre Corona circular.

 
Vista:

Ayuda sobre Corona circular.

Publicado por BigLuis (713 intervenciones) el 13/06/2005 16:13:17
Ahora me toca preguntar a mi. Alguien podria decirme como puedo obtener la superficie de una corona circular en coordenadas? Es para escanearla, mediante codigo, pixel por pixel y detectar lo que sea. El escaneo mas o menos lo sabria hacer pero no condigo seleccionar la corona circular es decir UN DONUT.
La formula matematica o geometrica tambien la se pero me atasco al querer convertirla a Delphi con sus coordenadas.
Si no me he exlicado ahi va un ejemplo: Quiero hacer un programa que lea las distintas secciones de una diana de tiro olimpico para calcular la puntuacion de los disparos impactados a traves de una camara web. Para ello escaneo la diana y en un segundo escaneo detecto las alteraciones en los pixels y según el sector donde se produzca la alteracion tiene una puntuacion diferente. Que manera de complicarme la vida.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda sobre Corona circular.

Publicado por beosman (163 intervenciones) el 14/06/2005 13:19:01
No te he entendido lo que quieres decir, ¿superficie en coordenadas? Si quieres la superficie de un donut ¿plano? (como un CD, con agujero?) pues calculas el área de la circunferencia de fuera y le restas el área de la circunferencia de dentro...
Si quieres las coordenadas pues usa un poco de trigonometría (senos y cosenos relacionados con las x y las y de las posiciones, teniendo en cuenta que los ángulos han de darse en radianes: 360º = 2*pi radianes).
Si me lo explicas mejor quizás pueda ayudarte algo más.

Un saludo.

Diego :: beosman
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre Corona circular.

Publicado por BigLuis (713 intervenciones) el 14/06/2005 15:21:14
"Si quieres las coordenadas pues usa un poco de trigonometría (senos y cosenos relacionados con las x y las y de las posiciones, teniendo en cuenta que los ángulos han de darse en radianes: 360º = 2*pi radianes). "
Efectivamente eso es lo que quiero, pero no lo se hacer, a pesar de tus explicaciones (mis conocimientos matemáticos quedaron en el tunel del tiempo). Lo que quiero es ir comporbando pixel por pixel X/Y sin que la X ni la Y caiga fuera del CD o del Donut plano ¿me entiendes ahora?.Si es muy complicado no te calientes la cabeza ya que es solo un experimento (como todo lo que hago).
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ok, lo busco y listo

Publicado por beosman (163 intervenciones) el 14/06/2005 16:28:55
Ok, pues te lo busco por casa y lo pongo otra vez por aquí, que mis matemáticas también están un poco olvidadas.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

A ver, que ya lo tengo...

Publicado por beosman (163 intervenciones) el 14/06/2005 16:39:27

Para dibujar una circunferencia se hace de la siguiente manera:

// tienes que fijar el centro de unas coordenadas (que suelen ser 0,0).
// Pero si quieres dibujar una circunferencia en el medio de la ventana,
// la posición inicial tendrá un desplazamiento que debes sumar a la
// x y a la y que te de como resultado de las siguientes operaciones.

var radio: Integer; // el radio de la circunferencia
x,y: Integer; // donde se tiene que dibujar el punto para dibujarla
angulo: Extended;

for i := 0 to 360 do begin // dibujar todos los puntos
angulo := (2 * PI * i) / 360; // el ángulo en radianes
x := Round(radio * cos(angulo)); //
y := Round(radio * sin(angulo));
// aquí dibujar el punto
end;

Al final de este buble ya tendremos una circunferencia. Con estas operaciones, lo que quieres saber es si un punto está dentro de una circunferencia o no. Para eso, lo que tenemos que saber es el radio desde el origen (cosa que en este algoritmo lo sabemos). Pero conocemos la x y la y (cosa que en este algoritmo es lo que tenemos que averiguar). Así te salen unas ecuaciones donde se despeja el radio y así podemos saber si un punto está dentro de una circunferencia o no.

Espero que todo este lío te sirva de algo. Yo para aprender me construí una simulación de un radar (qué cosa, de ahí este código) que si quieres te lo paso para que lo veas.

Venga, un saludo. Nos vemos.

Diego :: beosman

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:A ver, que ya lo tengo...

Publicado por BigLuis (713 intervenciones) el 14/06/2005 17:18:28
Muchisimas gracias Beosman. No te exagero, pero hace mas de un año que llevaba haciendo la misma pregunta y no obtenia la respuesta adecuada. Otra cosa distinta es que sepa interpretarla. Supongo que si.
Precisamente, lo que quiero hacer es como un radar, es decir, como expliqué, haré varias pasadas a las distintas secciones y detectaré los cambios (usease un radar). Te agradecería mucho si me lo puedes mandar ya que no es lo mismo ver las cosas que interpretarlas.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Esto... ¿cual es tu correo?

Publicado por beosman (163 intervenciones) el 16/06/2005 07:30:57

Pues eso, que cual es tu correo para que te envíe el programilla.

Un saludo.

Diego :: beosman
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Esto... ¿cual es tu correo?

Publicado por BigLuis (713 intervenciones) el 16/06/2005 15:27:39
Joder (perdon) Beosman tanta carrera pa na.........(es broma). Pues mi correo es el mismo desde el que te mandé las unidades de thumbnails.......
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar