Dibujar línea

26/09/2006 - 20:07 por alberto | Informe spam
A partir de un punto dado, tengo que dibujar una línea recta de una longitud
determinada medida en píxeles.

El problema es que el método DrawLine me pide dos puntos y los datos que
tengo son los siguientes:

1) Coordenadas del punto origen
2) Longitud de la recta
3) Ángulo de inclinación. Por ejemplo, si el ángulo es 90, tendré que
dibujar una línea recta hacia arriba desde el origen.

Entiendo que se trata de un problema de matemáticas más que de C# pero no sé
cómo resolverlo. Hay que averiguar las coordenadas del segundo punto a
partir del ángulo y de la longitud de la recta.

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
26/09/2006 - 20:26 | Informe spam
"alberto" wrote in message
news:
A partir de un punto dado, tengo que dibujar una línea recta de una
longitud determinada medida en píxeles.

El problema es que el método DrawLine me pide dos puntos y los datos que
tengo son los siguientes:

1) Coordenadas del punto origen
2) Longitud de la recta
3) Ángulo de inclinación. Por ejemplo, si el ángulo es 90, tendré que
dibujar una línea recta hacia arriba desde el origen.

Entiendo que se trata de un problema de matemáticas más que de C# pero no
sé cómo resolverlo. Hay que averiguar las coordenadas del segundo punto a
partir del ángulo y de la longitud de la recta.



Ecuación de la recta: y=m*x+c
"m" es la pendiente, que equivale a la tangente del ángulo de
inclinación medido a partir de lado positivo del eje x en dirección al y.
Recuerda que si el ángulo lo tienes en grados hace falta convertirlo en
radianes antes de usar la función Math.Tan() en C#.
Si sustituyes en x e y las coordenadas del punto origen (llamémosles x0
e y0), eso te permite despejar "c", que es el valor que te falta para tener
la ecuación completa. c=y0-m*x0.

Ahora lo que necesitas son la x y la y del punto final para poder
ejecutar el Drawline. Lamémosles x1 e y1. Como tienen que pertenecer a la
recta, se tiene que cumplir y1=m*x1+c.
Además sabes la distancia entre los dos puntos:
d=RaizCuadrada((y0-y1)^2+(x0-x1)^2). Esta ecuación junto con la anterior
forman un sistema de dos ecuaciones con dos incógnitas (x1 e y1), ya que
todos los demás datos los has calculado previamente. Ahora solo tienes que
despejar la x1 y la y1, que junto con la x0 y la y0 de tu punto inicial te
permiten llamar a Graphics.Drawline para dibujar el segmento deseado.
Respuesta Responder a este mensaje
#2 alberto
26/09/2006 - 20:48 | Informe spam
Muchísimas gracias.

"Alberto Poblacion"
escribió en el mensaje news:
"alberto" wrote in message
news:
A partir de un punto dado, tengo que dibujar una línea recta de una
longitud determinada medida en píxeles.

El problema es que el método DrawLine me pide dos puntos y los datos que
tengo son los siguientes:

1) Coordenadas del punto origen
2) Longitud de la recta
3) Ángulo de inclinación. Por ejemplo, si el ángulo es 90, tendré que
dibujar una línea recta hacia arriba desde el origen.

Entiendo que se trata de un problema de matemáticas más que de C# pero no
sé cómo resolverlo. Hay que averiguar las coordenadas del segundo punto a
partir del ángulo y de la longitud de la recta.



Ecuación de la recta: y=m*x+c
"m" es la pendiente, que equivale a la tangente del ángulo de
inclinación medido a partir de lado positivo del eje x en dirección al y.
Recuerda que si el ángulo lo tienes en grados hace falta convertirlo en
radianes antes de usar la función Math.Tan() en C#.
Si sustituyes en x e y las coordenadas del punto origen (llamémosles x0
e y0), eso te permite despejar "c", que es el valor que te falta para
tener la ecuación completa. c=y0-m*x0.

Ahora lo que necesitas son la x y la y del punto final para poder
ejecutar el Drawline. Lamémosles x1 e y1. Como tienen que pertenecer a la
recta, se tiene que cumplir y1=m*x1+c.
Además sabes la distancia entre los dos puntos:
d=RaizCuadrada((y0-y1)^2+(x0-x1)^2). Esta ecuación junto con la anterior
forman un sistema de dos ecuaciones con dos incógnitas (x1 e y1), ya que
todos los demás datos los has calculado previamente. Ahora solo tienes que
despejar la x1 y la y1, que junto con la x0 y la y0 de tu punto inicial te
permiten llamar a Graphics.Drawline para dibujar el segmento deseado.


Respuesta Responder a este mensaje
#3 Harvey Triana
26/09/2006 - 23:11 | Informe spam
Cordenadas polares a cartesianas.

Si no estoy mal, debe ser:
(xo, yo, r * Math.Cos(a), y * Math.Sin(y))

xo, yo = Origen
r = Radio
a = Angulo en radianes

<Harvey Triana />

"alberto" escribió en el mensaje
news:
A partir de un punto dado, tengo que dibujar una línea recta de una
longitud determinada medida en píxeles.

El problema es que el método DrawLine me pide dos puntos y los datos que
tengo son los siguientes:

1) Coordenadas del punto origen
2) Longitud de la recta
3) Ángulo de inclinación. Por ejemplo, si el ángulo es 90, tendré que
dibujar una línea recta hacia arriba desde el origen.

Entiendo que se trata de un problema de matemáticas más que de C# pero no
sé cómo resolverlo. Hay que averiguar las coordenadas del segundo punto a
partir del ángulo y de la longitud de la recta.

Muchas gracias

Respuesta Responder a este mensaje
#4 alberto
27/09/2006 - 10:08 | Informe spam
Esta implementación me parece más sencilla pero me da problemas a la hora de
codificarla.

Por ejemplo, intento dibujar a partir de las coordenadas (300, 300) una
línea de longitud 10 con una inclinación de 45 grados. Después de efectuar
los cálculos, me sale que el punto final está en (7, 7).

El código es el siguiente:

...
int x = Convert.ToInt32(10 * Math.Cos( (45*Math.PI) /180 );
int y = Convert.ToInt32(10 * Math.Sin ( (45*Math.PI) /180 );

Point p1 = new Point (300, 300);
Point p2 = new Point (x, y);

g.DrawLine(pen, p1, p2);


Gracias por la ayuda.

"Harvey Triana" escribió en el mensaje
news:%
Cordenadas polares a cartesianas.

Si no estoy mal, debe ser:
(xo, yo, r * Math.Cos(a), y * Math.Sin(y))

xo, yo = Origen
r = Radio
a = Angulo en radianes

<Harvey Triana />

"alberto" escribió en el mensaje
news:
A partir de un punto dado, tengo que dibujar una línea recta de una
longitud determinada medida en píxeles.

El problema es que el método DrawLine me pide dos puntos y los datos que
tengo son los siguientes:

1) Coordenadas del punto origen
2) Longitud de la recta
3) Ángulo de inclinación. Por ejemplo, si el ángulo es 90, tendré que
dibujar una línea recta hacia arriba desde el origen.

Entiendo que se trata de un problema de matemáticas más que de C# pero no
sé cómo resolverlo. Hay que averiguar las coordenadas del segundo punto a
partir del ángulo y de la longitud de la recta.

Muchas gracias





Respuesta Responder a este mensaje
#5 alberto
27/09/2006 - 10:14 | Informe spam
Perdón. Me acabo de dar cuenta que en las coordenadas polares se mide el
punto final desde el origen. Hay que sumarle las coordenadas del punto
origen para que salga bien.

Gracias en cualquier caso.

"alberto" escribió en el mensaje
news:
Esta implementación me parece más sencilla pero me da problemas a la hora
de codificarla.

Por ejemplo, intento dibujar a partir de las coordenadas (300, 300) una
línea de longitud 10 con una inclinación de 45 grados. Después de efectuar
los cálculos, me sale que el punto final está en (7, 7).

El código es el siguiente:

...
int x = Convert.ToInt32(10 * Math.Cos( (45*Math.PI) /180 );
int y = Convert.ToInt32(10 * Math.Sin ( (45*Math.PI) /180 );

Point p1 = new Point (300, 300);
Point p2 = new Point (x, y);

g.DrawLine(pen, p1, p2);


Gracias por la ayuda.

"Harvey Triana" escribió en el mensaje
news:%
Cordenadas polares a cartesianas.

Si no estoy mal, debe ser:
(xo, yo, r * Math.Cos(a), y * Math.Sin(y))

xo, yo = Origen
r = Radio
a = Angulo en radianes

<Harvey Triana />

"alberto" escribió en el mensaje
news:
A partir de un punto dado, tengo que dibujar una línea recta de una
longitud determinada medida en píxeles.

El problema es que el método DrawLine me pide dos puntos y los datos que
tengo son los siguientes:

1) Coordenadas del punto origen
2) Longitud de la recta
3) Ángulo de inclinación. Por ejemplo, si el ángulo es 90, tendré que
dibujar una línea recta hacia arriba desde el origen.

Entiendo que se trata de un problema de matemáticas más que de C# pero
no sé cómo resolverlo. Hay que averiguar las coordenadas del segundo
punto a partir del ángulo y de la longitud de la recta.

Muchas gracias









Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida