martes, 17 de agosto de 2010

¿KmPlot dentro de KAlgebra?

Aunque no literalmente, está fue una de las metas del proyecto. Si bien KmPlot es un KPart la idea aquí no fue hacer que KAlgebra cargue el KPart de KmPlot, sino aprovechar el concepto de la interfaz de usuario que presenta KmPlot.

Lo que se hizo fue tomar la cara de KmPlot, así es: la cara, es decir, tomar algunos diálogos y la UI. Luego de esto, esta UI se puso dentro de KAlgebra. Finalmente, se hizo que esta nueva UI use las tecnologías y componentes de KAlgebra para dibujar funciones.

¿Cuales son las ventajas de hacer esto?
Esto trae enormes ventajas, veamos una lista de ella:

  • Se aprovecha lo que ya está desarrollado en KmPlot y así se mejora KAlgebra, es decir se hace una reutilización de código.
  • Los diálogos de KmPlot para crear y editar funciones son bastante intuitivos y mas completos que el que se tiene en KAlgebra.
  • Cada gráfico de KmPlot puede tener diferente espesor de linea (o grosor del pincel) este espesor se mide en milímetros. Gracias a este trabajo KAlgebra ahora tendría esta misma funcionalidad.

En las siguientes imágenes veremos capturas de pantalla que explican mejor el concepto:

El menú para crear funciones de KmPlot ya está dentro de KAlgebra:


A continuación vemos el dialogo para crear funciones explícitas. Notar que tenemos una opción de cambiar el tamaño del pincel (espesor de linea) al crear una función:


La lista de funciones que usaremos ahora, no será la de KmPlot, sino el componente que tiene KAlgebra para visualizar funciones:


Del mismo modo, la creación de funciones implícitas también está en la nueva UI:


Ahora vemos 2 funciones en la lista, asimismo notamos que las 2 curvas están siendo dibujadas con distinto tamaño de pincel:


Finalmente, vemos una captura en donde se está editando un gráfico de una función paramétrica que ya se creó. En este caso en particular, crear/editar las curvas paramétricas con 2 cajas de texto que representen los 2 componentes del vector es mucho mejor para el usuario. En la versión actual de KAlgebra, para crear una de función paramétrica se tiene que escribir en la siguiente sintaxis: t->vector{componente 1, componente 2}


Poco a poco KDE-Edu tendría un único programa para dibujar funciones: KAlgebra, sin embargo esto se haría sin dejar de lado el esfuerzo y desarrollo que ya se tiene en KmPlot, reuso de código :)

Mejoras en KAlgebra

Durante la selección de proyectos para el GSoC de este año, tuve el agrado de reunirme con el equipo de KDE-Edu en el KDEEdu Sprint 2010. En el transcurso de este evento, avancé algunas cosas del proyecto de GSoC.

Dado que el sprint fue antes del congelamiento de versiones de KDE 4.5 supongo que algunos de estos bits deberían estar saliendo con la nueva versión de KDE. En todo caso, el comparativo de las mejoras que veremos a continuación, será respecto a la última versión actual de KAlgebra -que está en la mayoría de las distribuciones- esta es: KAlgebra 0.9 usando KDE 4.4.5

Lo que se realizó en el sprint fue trabajar en resolver uno que otro bug y -principalmente- en mejorar los gráficos de las lineas tangentes para las funciones. Veamos todo esto en detalle.

Bug para dibujar curvas f(y)

En la versión actual de KAlgebra no podemos dibujar inmediatamente una función que contenga la variable y, en vez de esto se debe ingresar así: y->f(y) ; esto se debe al funcionamiento interno del parser que usa KAlgebra.



Si bien no es un error serio, sí es algo que frutaría a muchos usuarios nuevos ... Ahora podemos hacer un gráfico de este tipo de funciones sin problema, con lo cual el tema estaría cerrado :)



Lineas tangentes a una curva

Aunque las tangentes son triviales en concepto, su valor didáctico es enorme. Es por eso que se ha trabajado en hacer que KAlgebra genere lineas tangentes para las funciones polares, paramétricas e implícitas (actualmente sólo se pueden ver las tangentes en las curvas explícitas)

En KAlgebra la linea tangente a una función es de color azul y es sólo un segmento de recta, este segmento se dibuja respondiendo al movimiento del mouse sobre el gráfico de la curva.

Aquí vemos que la tangente se dibuja para una función polar:


Aquí vemos dibujada la tangente para el caso de la una función paramétrica:


Finalmente, y no por eso lo que fue menos complejo de programar :P, tenemos la tangente para curvas implícitas:


Con todo esto tenemos nuevas características que ya deben estar dentro de KAlgebra para KDE 4.5, aun queda hacer mas trabajo pero creo que vamos por buen camino :)