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
 

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.

Preguntas similares