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 :)

jueves 22 de julio de 2010

Curvas implícitas en KAlgebra

Las curvas implícitas son necesarias para representar ciertas funciones que contienen 2 variables, en este caso x e y. De esta manera podemos dibujar varias curvas que no son posibles expresarlas de forma explícita. Con el trabajo de GSoC para KAlgebra y KmPlot ahora KAlgebra podrá dibujar curvas implícitas, veamos algunos ejemplos:



  • Dibujemos una curva que se corta a sí misma varias veces:

Algunas de estas curvas no son bien dibujadas por KmPlot (en algunos casos ni siquiera son dibujadas) Como nota de la implementación de esta nueva característica, comento lo siguiente: el método desarrollado para que KAlgebra logre dibujar curvas implícitas, conociste en almacenar la curva en un quadtree y de esta manera dibujar solo los nodos en los cuales la curva existe.

En la siguiente nota del blog comentaré los trabajos hechos para KAlgebra en base al reuso de la UI de KmPlot.

lunes 5 de julio de 2010

KAlgebra: FunctionsView con MathML

El proyecto de GSoC para KAlgebra y KmPlot de este año, tiene como meta: mejorar el sistema para dibujar funciones matemáticas. Y además, la buena noticia es que también queda tiempo para algunas mejoras en la UI, sobre todo de KAlgebra.

Al dibujar curvas 2D, KAlgebra mantiene una lista de funciones en donde se guarda los datos de cada función: como su color, su ecuación, entre otros. Sin embargo, las ecuaciones de cada función son visualizadas sin respectar la notación matemática, pues solo muestran un arreglo de caracteres como "^", "/" junto a las variables y constantes:


Gracias a que KAlgebra soporta MathML, ahora la lista de funciones luce mucho más profesional . Ya es posible visualizar la ecuación de una función respetando la notación matemática de acuerdo a los símbolo en la expresión:




Con esto, cierro el informe sobre el estado del proyecto. Con seguridad las siguientes semanas colocaré más detalles sobre el progreso actual :)

domingo 20 de junio de 2010

Intro

Bitácora del capitán: Inicio del proyecto. La idea: Crear una librería que compute los puntos de una función matemática para así lograr dibujarla. Su nombre: Keomath

Bajo el programa de Google Summer of Code 2010, se unirá el desarrollo de este proyecto a KDE-Edu , será interesante ver el impacto de este emprendimiento en KAlgebra y en KmPlot