Delphi - Ayuda con Graficos

 
Vista:

Ayuda con Graficos

Publicado por JOSE LUIS (2 intervenciones) el 23/04/2008 17:09:53
Tengo que hacer un programa que dibuje varias elipses (entre 1-100) en algo tipo Chart (con ejes y escalas), aparte también debo dibujar un área sobre la cual están las elipses. Estos dibujos se hacen a partir de puntos, es decir, yo tengo de 50-100 puntos depende cuantos quiera que se generen, de cada elipse, dichos puntos son de su circunferencia, esos puntos deben unirse formando la elipse… lo mismo con la superficie sobre la cual están las elipses, también tengo los puntos de esa área irregular… esto en 2D, las coordenadas son reales, por lo cual los valores x,y oscilan entre los miles… inicialmente lo intente con un TChart, usando series Point y pues funciono, pero necesito que sean elipses con circunferencia continua y no punteada… use la serie Line, pero se unen las líneas arriba y abajo, se hace un relajo y no se pudo… y es que necesito que estén escaladas lo más exactamente posible y que estén sobre un plano cartesiano (algo como un Tchart esta excelente)… no se como hacer eso, nunca había trabajado con gráficos, lo mío es más bases de datos y sistemas de información… me dijeron que buscara un lenguaje especial para gráficos, o un software o una librería… lo que fuera que me auxiliara en eso…

Bueno no se si me puedan aconsejar, respecto a lo que necesito o me puedan enviar un pequeño ejemplo, ¿con que creen que pueda hacerlo? No importa si tengo que cambiar el lenguaje, eso es lo de menos… creo que el programa es muy simple =S de hecho hay algo similar en Excel, pero lo quieren en una aplicación, si Excel lo hizo… debe poderse muy fácil en un lenguaje, pero no tengo la más mínima idea de cómo…
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
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Ayuda con Graficos

Publicado por E.T. (1244 intervenciones) el 23/04/2008 19:33:26
Que tal, existe un software, que yo he usado, que te permite hacer prácticamente cualquier gráfica, pero yo solo lo he probado por medio de ecuaciones, no se si te deje hacerlo por puntos, se llama Winplot.

Pero igual para dibujar una gráfica necesitas su ecuación, y en el caso de la elipse, necesitas su centro y sus diametros, o los cuatro puntos más alejados de su centro, yo solo he dibujado parábolas, que su ecuación es mucho más sencilla que la de la elipse

prueba esto en un botón para que cheques a que mas o menos como hacerlo

Form1.Canvas.TextOut(0,form1.ClientHeight,'');
form1.Canvas.Pen.Color:=clblue;
for i:=1 to 200 do begin
Form1.Canvas.Pixels[trunc(i*factor),form1.ClientHeight-(i*i)]:=clred;
Form1.Canvas.LineTo(trunc(i*factor),form1.ClientHeight-(i*i));
end;

i y factor son tipo integer, y factor puede valer 0 o cualquier numero positivo, factor define la apertura de la parábola.

La ecuación de la parabola es y = X^2

suerte
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
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Ayuda con Graficos

Publicado por E.T. (1244 intervenciones) el 25/04/2008 20:53:19
Bien, he logrado dibujar una elipse, pero con unas cuantas limitaciones hasta el momento.

Detalles:
-Usando la ecuación de la elipse
-Cada 10 pixeles de la form, valen una unidad en el plano cartesiano ( para comprobar esto puedes poner Shapes con ancho = 0 para los del eje y, y otros de alto 0 para el eje x, separados por 10 pizeles cada uno, empezando de la izquierda y desde abajo, para que esté bien orientada la grafica )
-Solo uso por el momento un cuadrante del plano cartesiano
-Para el ejemplo uso una elipse de radio menor = 1, radio mayor = 2, con un cento en x=1 y=1

NOTA: Puedes modificar los valores a,b,h,k; para notar los cambios, los cuales son
a=Radio menor, para el ejemplo =1
b=Radio mayor, para el ejemplo =2
h=Desplazamiento del centro en X, para el ejemplo =1
h=Desplazamiento del centro en Y, para el ejemplo =1
"valor" y "jj" son variables tipo real;

necesitas ejecutar estos dos for en un boton, ademas de agregar la unidad "math"

for i:=0 to 20 do begin
a:=1;b:=2;
h:=-1;k:=-1;
jj:=i/10;
valor:=(b*sqrt(-(jj*jj)-(2*h*jj)+(a*a)-(h*h))-(a*k))/a;
if i = 0 then
Form1.Canvas.TextOut(0,trunc(form1.ClientHeight-(valor*10)),'');
Form1.Canvas.Pixels[trunc(i),form1.ClientHeight-trunc(valor*10)]:=clred;
Form1.Canvas.LineTo(trunc(i),form1.ClientHeight-trunc(valor*10));
end;
for i:=0 to 20 do begin
a:=1;b:=2;
h:=-1;k:=-1;
jj:=i/10;
valor:=-((b*sqrt(-(jj*jj)-(2*h*jj)+(a*a)-(h*h))+(a*k)))/a;
if i = 0 then
Form1.Canvas.TextOut(0,trunc(form1.ClientHeight-(valor*10)),'');
Form1.Canvas.Pixels[trunc(i),form1.ClientHeight-trunc(valor*10)]:=clred;
Form1.Canvas.LineTo(trunc(i),form1.ClientHeight-trunc(valor*10));
end;
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
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

NOTAS

Publicado por E.T. (1244 intervenciones) el 25/04/2008 20:56:06
Los valores de h y k, estan invertidos, por ejemplo, si quieres que la elipse tenga su centro en 1,1, en la función debes de darle a h y k -1,-1

Suerte
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