Mostrando las entradas con la etiqueta Tesis. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Tesis. Mostrar todas las entradas

lunes, 7 de septiembre de 2009

amfPhp MySQL Flex - Universal Mind Extension Example - Flex 3

Translation:


OBSERVACION: amfPHP 1.9 es soportado hasta Php 5.2.xxx

Proximamente la Explicacion

OBSERVATION: amfPHP 1.9 is olny Soported by Php 5.2.xxx or less

Soon How To.







martes, 1 de septiembre de 2009

Tesis - SVN - Historico de Avances - Software Educativo - Φsik Software

Visual SVN es una solución rápida para aquellos que no les gusta la consola, además de ser gratuita incluye una interfaz muy amigables para los usuarios que quieres levantar una SVN de forma local o remota, se instala en menos de 10 minutos. Aclaro esta no es la solución más profesional, pero sirve para mantener un ambiente de desarrollo limpio y agradable.

Mi recomendación, para todo proyecto que este pegado a un cronograma o tenga que ofrecer avances a una directiva o cliente final, un SVN bien comentado tras cado commit es la solución perfecta.

Así que no hagamos Commit por salvar y respaldar, Siempre hagan un comentario breve de que has hecho hasta el momento, cuales son los errores que pudieran solucionarse en el futuro y con qué vas a continuar.

Tesis - Modelo de Base de Datos Final en MySQL - Software Educativo - Φsik Software

(Click sobre la imagen para verlo en Grande)

Después de varios meses de discusión hemos llegado con el modelo de base de datos final para la tesis, básicamente todo gira en torno a 4 tablas principales:

  • Estudiantes
  • Profesores
  • Teorías
  • Proyectos

Existen 3 tipos de Roles:

  • Estudiantes solo pueden consultar y modificar sus datos.
  • Profesores pueden Consultar Modificar Insertar y Eliminar.
  • Registro solo para ingresar estudiantes.

El Rol administrador esta por defecto pero no es para su uso, solo cuando sea necesario o en caso de modificaciones a la Base de datos. (Eliminación Creación de Tablas).







martes, 4 de agosto de 2009

Trace a Particle - Dibujar el camino de una Particula - Flex 3

Translation:

En este ejemplo podemos seguir la trayectoria de una animación en este caso una particular basada en formulas matemáticas. El seguir la trayectoria nos puede brindar información de donde estuvo una partícula o donde podrá estar en el futuro en caso de que sea una función cíclica.
This is an example of how we can trace an animation based in a Mathematical formula. The trace can give us information of the particle was in the past and if it’s a Cycle function were its going to be in the future.


En este caso usamos la fórmula para métrica del circulo, usando el sin y cos y colocamos variables dentro de la formula. La formula básica para la X y la Y es la siguiente:

X = sin( angle )* radius + initialPositionInX;
Y = cos( angle )* radius + initialPositionInY;

Para que podamos apreciar una animación necesitamos que el ángulo sea variable y un contador, también podemos colocar una velocidad a ese ángulo para que vaya más rápido.
Las formulas nos quedarían expresadas de la siguiente manera:

X = sin( time*velocityX )* radiusX + initialPositionInX;
Y = cos( time*velocityY )* radiusY + initialPositionInY;

Creamos una clase llamada particle y usamos una application para correrla:
Particle Class
package
{
import mx.core.UIComponent;

public class Particle extends UIComponent
{

/*---------------------------------------------------------------------------*/
/*----------------------------- START VARIABLES -----------------------------*/
/*---------------------------------------------------------------------------*/ 

private var _particleColor:uint = 0x000000;
private var _particleSize:int = 2;

/*---------------------------------------------------------------------------*/
/*------------------------------ END VARIABLES ------------------------------*/
/*---------------------------------------------------------------------------*/ 

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*--------------------------- START INIT FUNCTIONS --------------------------*/
/*---------------------------------------------------------------------------*/

public function Particle()
{
super();
}

/*---------------------------------------------------------------------------*/
/*---------------------------- END INIT FUNCTIONS ---------------------------*/
/*---------------------------------------------------------------------------*/

/**************************************************************************/

/*---------------------------------------------------------------------------*/
/*------------------------------ START GET SET ------------------------------*/
/*---------------------------------------------------------------------------*/

public function get particleColor():uint{
return _particleColor;
}
public function set particleColor(value:uint):void{
_particleColor = value;
invalidateDisplayList();
}

public function get particleSize():int{
return _particleSize;
}
public function set particleSize(value:int):void{
_particleSize = value;
invalidateDisplayList();
}

/*---------------------------------------------------------------------------*/
/*------------------------------- END GET SET -------------------------------*/
/*---------------------------------------------------------------------------*/

/**************************************************************************/

/*---------------------------------------------------------------------------*/
/*------------------------- START OVERRIDE FUNCTION -------------------------*/
/*---------------------------------------------------------------------------*/

override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number): void 
{
super.updateDisplayList(_particleSize,_particleSize);
graphics.clear();
graphics.lineStyle(1,_particleColor,1);
graphics.beginFill(_particleColor,1);
graphics.drawCircle(0,0,_particleSize);
graphics.endFill();
}

/*---------------------------------------------------------------------------*/
/*------------------------- END OVERRIDE FUNCTION ---------------------------*/
/*---------------------------------------------------------------------------*/

}
}

The Application
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" frameRate="120" 
creationComplete="creationCompleteHandler(event)" layout="absolute" 
width="415" height="300" backgroundColor="0xFFFFFF"  xmlns:local="*" 
backgroundGradientAlphas="[1.0, 1.0]" 
backgroundGradientColors="[#FFFFFF, #FFFFFF]" themeColor="#FFFFFF" 
borderColor="#000000" borderStyle="solid" >
<mx:Script>
<![CDATA[
import mx.events.NumericStepperEvent;
import mx.events.ColorPickerEvent;
import mx.controls.Image;
import mx.core.UIComponent;
import mx.events.FlexEvent;

/*---------------------------------------------------------------------------*/
/*----------------------------- START VARIABLES -----------------------------*/
/*---------------------------------------------------------------------------*/ 

private var time:Number =0;
private var xo:Number = 0;
private var yo:Number = 0;
private var velocityX:Number = 1;
private var velocityY:Number = 1;
private var radiusX:Number = 100;
private var radiusY:Number = 100;
private var myCont:Canvas;
private var myImage:Image;
private var myParticle:Particle;

/*---------------------------------------------------------------------------*/
/*------------------------------ END VARIABLES ------------------------------*/
/*---------------------------------------------------------------------------*/ 

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*--------------------------- START INIT FUNCTIONS --------------------------*/
/*---------------------------------------------------------------------------*/

private function creationCompleteHandler(event:FlexEvent):void{
this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}
private function initParticleHandler(event:FlexEvent):void{
myCont = new Canvas;
myCont.percentWidth = 100;
myCont.percentHeight = 100;
myCanvas.addChild(myCont);
myParticle = new Particle;
myParticle.particleSize = 2;
myParticle.particleColor = 0xFF0000;
xo = myParticle.x = myCanvas.width/2;
yo = myParticle.y = myCanvas.height/2;
myImage = new Image;
myImage.percentWidth = 100;
myImage.percentHeight = 100;
myImage.alpha = 0.98;
myCont.addChild(myImage);
myCont.addChild(myParticle);
}

/*---------------------------------------------------------------------------*/
/*---------------------------- END INIT FUNCTIONS ---------------------------*/
/*---------------------------------------------------------------------------*/

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*-------------------------- START EVENT FUNCTIONS --------------------------*/
/*---------------------------------------------------------------------------*/ 

/*-- START EVENT CAIRNGORM --*/

/*--- END EVENT CAIRNGORM ---*/

/***************************/

/*---- START EVENT FLEX -----*/
private function enterFrameHandler(event:Event):void{
time+=1/stage.frameRate;
myParticle.x = Math.sin(time*velocityX)*radiusX + xo; 
myParticle.y = Math.cos(time*velocityY)*radiusY + yo; 
myImage.source = new Bitmap(this.getUIComponentBitmapData(UIComponent(myCont)));
}
public function changeColorHandler(event:ColorPickerEvent):void{
myParticle.particleColor = event.color;
}
public function changeVelocityX(event:NumericStepperEvent):void{
velocityX = event.value;
}
public function changeVelocityY(event:NumericStepperEvent):void{
velocityY = event.value;
}
public function changeRadiusX(event:NumericStepperEvent):void{
radiusX = event.value;
}
public function changeRadiusY(event:NumericStepperEvent):void{
radiusY = event.value;
}
public function changeAlpha(event:NumericStepperEvent):void{
myImage.alpha = event.value;
}
public function changeRadius(event:NumericStepperEvent):void{
myParticle.particleSize = event.value;
}
public function clearImageHandler(event:MouseEvent):void{
this.removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
myImage.source = new Bitmap();       
this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}

/*----- END EVENT ------*/

/*---------------------------------------------------------------------------*/
/*-------------------------- END EVENT FUNCTIONS ----------------------------*/
/*---------------------------------------------------------------------------*/

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*-------------------------- START OTHER FUNCTIONS --------------------------*/
/*---------------------------------------------------------------------------*/ 

public function getUIComponentBitmapData( target : UIComponent ) : BitmapData
{ 
var bd : BitmapData = new BitmapData( target.width, target.height );
var m : Matrix = new Matrix();
bd.draw( target, m );
return bd;  
}

/*---------------------------------------------------------------------------*/
/*-------------------------- END OTHER FUNCTIONS ----------------------------*/
/*---------------------------------------------------------------------------*/

]]>
</mx:Script>
<mx:HBox width="100%" height="100%">
<mx:Canvas width="78%" height="100%">
<mx:Form>
<mx:FormItem label="Color">
<mx:ColorPicker  change="changeColorHandler(event)"  
selectedColor="#FF0000"/>
</mx:FormItem>
<mx:FormItem label="Velocity X">
<mx:NumericStepper value="1" maximum="10" minimum="0" 
change="changeVelocityX(event)"/>
</mx:FormItem>
<mx:FormItem label="Velocity Y">
<mx:NumericStepper value="1" maximum="10" minimum="0" 
change="changeVelocityY(event)"/>
</mx:FormItem>
<mx:FormItem label="Radius X">
<mx:NumericStepper value="100" maximum="100" minimum="1" 
change="changeRadiusX(event)"/>
</mx:FormItem>
<mx:FormItem label="Radius Y">
<mx:NumericStepper value="100" maximum="100" minimum="1" 
change="changeRadiusY(event)"/>
</mx:FormItem>
<mx:FormItem label="Alpha">
<mx:NumericStepper value="0.98" maximum="1" minimum="0" 
stepSize="0.01"  change="changeAlpha(event)" />
</mx:FormItem>
<mx:FormItem label="Radius">
<mx:NumericStepper value="2" maximum="5" minimum="1" 
change="changeRadius(event)" />
</mx:FormItem>
<mx:FormItem label="Clear">
<mx:Button label="Clear" click="clearImageHandler(event)" />
</mx:FormItem>
</mx:Form>  
</mx:Canvas>
<mx:VBox width="100%" height="100%" >   
<mx:Canvas id="myCanvas" width="100%" height="100%" 
creationComplete="initParticleHandler(event)"/>
<mx:Label text="www.developyourdream.net" />
</mx:VBox>

</mx:HBox>
</mx:Application>
In this case I used the circle formula of Sin and Cos and put some variable inside the formula, this is the basic formulas in X and Y that we are using:

X = sin( angle )* radius + initialPositionInX;
Y = cos( angle )* radius + initialPositionInY;

So we can do it with animation we need to change the angle, we what to go faster so we can put a velocity to the angle.
The formula that we are using with the variable expresses like this:

X = sin( time*velocityX )* radiusX + initialPositionInX;
Y = cos( time*velocityY )* radiusY + initialPositionInY;

We created a class called particle and used in the applications:
Particle Class
package
{
import mx.core.UIComponent;

public class Particle extends UIComponent
{

/*---------------------------------------------------------------------------*/
/*----------------------------- START VARIABLES -----------------------------*/
/*---------------------------------------------------------------------------*/ 

private var _particleColor:uint = 0x000000;
private var _particleSize:int = 2;

/*---------------------------------------------------------------------------*/
/*------------------------------ END VARIABLES ------------------------------*/
/*---------------------------------------------------------------------------*/ 

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*--------------------------- START INIT FUNCTIONS --------------------------*/
/*---------------------------------------------------------------------------*/

public function Particle()
{
super();
}

/*---------------------------------------------------------------------------*/
/*---------------------------- END INIT FUNCTIONS ---------------------------*/
/*---------------------------------------------------------------------------*/

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*------------------------------ START GET SET ------------------------------*/
/*---------------------------------------------------------------------------*/

public function get particleColor():uint{
return _particleColor;
}
public function set particleColor(value:uint):void{
_particleColor = value;
invalidateDisplayList();
}

public function get particleSize():int{
return _particleSize;
}
public function set particleSize(value:int):void{
_particleSize = value;
invalidateDisplayList();
}

/*---------------------------------------------------------------------------*/
/*------------------------------- END GET SET -------------------------------*/
/*---------------------------------------------------------------------------*/

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*------------------------- START OVERRIDE FUNCTION -------------------------*/
/*---------------------------------------------------------------------------*/

override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number): void 
{
super.updateDisplayList(_particleSize,_particleSize);
graphics.clear();
graphics.lineStyle(1,_particleColor,1);
graphics.beginFill(_particleColor,1);
graphics.drawCircle(0,0,_particleSize);
graphics.endFill();
}

/*---------------------------------------------------------------------------*/
/*------------------------- END OVERRIDE FUNCTION ---------------------------*/
/*---------------------------------------------------------------------------*/

}
}

The Application
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" frameRate="120" 
creationComplete="creationCompleteHandler(event)" layout="absolute" 
width="415" height="300" backgroundColor="0xFFFFFF"  xmlns:local="*" 
backgroundGradientAlphas="[1.0, 1.0]" 
backgroundGradientColors="[#FFFFFF, #FFFFFF]" themeColor="#FFFFFF" 
borderColor="#000000" borderStyle="solid" >
<mx:Script>
<![CDATA[
import mx.events.NumericStepperEvent;
import mx.events.ColorPickerEvent;
import mx.controls.Image;
import mx.core.UIComponent;
import mx.events.FlexEvent;

/*---------------------------------------------------------------------------*/
/*----------------------------- START VARIABLES -----------------------------*/
/*---------------------------------------------------------------------------*/ 

private var time:Number =0;
private var xo:Number = 0;
private var yo:Number = 0;
private var velocityX:Number = 1;
private var velocityY:Number = 1;
private var radiusX:Number = 100;
private var radiusY:Number = 100;
private var myCont:Canvas;
private var myImage:Image;
private var myParticle:Particle;

/*---------------------------------------------------------------------------*/
/*------------------------------ END VARIABLES ------------------------------*/
/*---------------------------------------------------------------------------*/

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*--------------------------- START INIT FUNCTIONS --------------------------*/
/*---------------------------------------------------------------------------*/

private function creationCompleteHandler(event:FlexEvent):void{
this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}
private function initParticleHandler(event:FlexEvent):void{
myCont = new Canvas;
myCont.percentWidth = 100;
myCont.percentHeight = 100;
myCanvas.addChild(myCont);
myParticle = new Particle;
myParticle.particleSize = 2;
myParticle.particleColor = 0xFF0000;
xo = myParticle.x = myCanvas.width/2;
yo = myParticle.y = myCanvas.height/2;
myImage = new Image;
myImage.percentWidth = 100;
myImage.percentHeight = 100;
myImage.alpha = 0.98;
myCont.addChild(myImage);
myCont.addChild(myParticle);
}

/*---------------------------------------------------------------------------*/
/*---------------------------- END INIT FUNCTIONS ---------------------------*/
/*---------------------------------------------------------------------------*/

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*-------------------------- START EVENT FUNCTIONS --------------------------*/
/*---------------------------------------------------------------------------*/ 

/*-- START EVENT CAIRNGORM --*/

/*--- END EVENT CAIRNGORM ---*/

/***************************/

/*---- START EVENT FLEX -----*/
private function enterFrameHandler(event:Event):void{
time+=1/stage.frameRate;
myParticle.x = Math.sin(time*velocityX)*radiusX + xo; 
myParticle.y = Math.cos(time*velocityY)*radiusY + yo; 
myImage.source = new Bitmap(this.getUIComponentBitmapData(UIComponent(myCont)));
}
public function changeColorHandler(event:ColorPickerEvent):void{
myParticle.particleColor = event.color;
}
public function changeVelocityX(event:NumericStepperEvent):void{
velocityX = event.value;
}
public function changeVelocityY(event:NumericStepperEvent):void{
velocityY = event.value;
}
public function changeRadiusX(event:NumericStepperEvent):void{
radiusX = event.value;
}
public function changeRadiusY(event:NumericStepperEvent):void{
radiusY = event.value;
}
public function changeAlpha(event:NumericStepperEvent):void{
myImage.alpha = event.value;
}
public function changeRadius(event:NumericStepperEvent):void{
myParticle.particleSize = event.value;
}
public function clearImageHandler(event:MouseEvent):void{
this.removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
myImage.source = new Bitmap();       
this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}

/*----- END EVENT FLEX ------*/

/*---------------------------------------------------------------------------*/
/*-------------------------- END EVENT FUNCTIONS ----------------------------*/
/*---------------------------------------------------------------------------*/

/*****************************************************************************/

/*---------------------------------------------------------------------------*/
/*-------------------------- START OTHER FUNCTIONS --------------------------*/
/*---------------------------------------------------------------------------*/ 

public function getUIComponentBitmapData( target : UIComponent ) : BitmapData
{ 
var bd : BitmapData = new BitmapData( target.width, target.height );
var m : Matrix = new Matrix();
bd.draw( target, m );
return bd;  
}

/*---------------------------------------------------------------------------*/
/*-------------------------- END OTHER FUNCTIONS ----------------------------*/
/*---------------------------------------------------------------------------*/

]]>
</mx:Script>
<mx:HBox width="100%" height="100%">
<mx:Canvas width="78%" height="100%">
<mx:Form>
<mx:FormItem label="Color">
<mx:ColorPicker  change="changeColorHandler(event)"  
selectedColor="#FF0000"/>
</mx:FormItem>
<mx:FormItem label="Velocity X">
<mx:NumericStepper value="1" maximum="10" minimum="0" 
change="changeVelocityX(event)"/>
</mx:FormItem>
<mx:FormItem label="Velocity Y">
<mx:NumericStepper value="1" maximum="10" minimum="0" 
change="changeVelocityY(event)"/>
</mx:FormItem>
<mx:FormItem label="Radius X">
<mx:NumericStepper value="100" maximum="100" minimum="1" 
change="changeRadiusX(event)"/>
</mx:FormItem>
<mx:FormItem label="Radius Y">
<mx:NumericStepper value="100" maximum="100" minimum="1" 
change="changeRadiusY(event)"/>
</mx:FormItem>
<mx:FormItem label="Alpha">
<mx:NumericStepper value="0.98" maximum="1" minimum="0" 
stepSize="0.01"  change="changeAlpha(event)" />
</mx:FormItem>
<mx:FormItem label="Radius">
<mx:NumericStepper value="2" maximum="5" minimum="1" 
change="changeRadius(event)" />
</mx:FormItem>
<mx:FormItem label="Clear">
<mx:Button label="Clear" click="clearImageHandler(event)" />
</mx:FormItem>
</mx:Form>  
</mx:Canvas>
<mx:VBox width="100%" height="100%" >   
<mx:Canvas id="myCanvas" width="100%" height="100%" 
creationComplete="initParticleHandler(event)"/>
<mx:Label text="www.developyourdream.net" />
</mx:VBox>

</mx:HBox>
</mx:Application>



Descargar Archivo y Ver Codigo Fuente:


Download File's and Source:

martes, 2 de junio de 2009

Cairngorm - Universal Mind Extension

Translation:
En este post se explicara paso por paso, como se lleva a cabo la ejecución de un ciclo completo de Cairngorm UM Extension. Universal Mind le agregaron una extensión al Cairngorm donde el diagrama cambia un poco.

Si queremos Ver el Cairngorm en su esquema básico podemos verlo en este interesante post en la pagina expuesta a continuación: http://internetdeveloping.blogspot.com/2009/05/ejemplo-cairngorm-agregar-contacto.html

El esquema de Universal Mind, se puede resumir en el siguiente diagrama:
This post will explain step by step, as performed by the execution of a complete cycle of UM Cairngorm Extension. Universal Mind Cairngorm Added an extension to a diagram and it change a bit from the original Cairngorm.

If we want to view the Cairngorm in its basic outline, we can visit this post that explains the bacis cicle: http://internetdeveloping.blogspot.com/2009/05/ejemplo-cairngorm-agregar-contacto.html

The scheme of Universal Mind, can be summarized in the following diagram:






martes, 28 de abril de 2009

Tesis - Modelo de Base de Datos en MySQL - Software Educativo - Φsik Software

Fecha: Lunes 20 de Abril de 2009 y Miercoles 22 de Abril de 2009

Buenos, Básicamente lo que hicimos fue sentarnos a desglosar el proyecto en pequeños pedazos, lo más básicos y ver como se podrían modelar en una Base de Datos cada uno de esos pedacitos.

Tenemos dos tipos de usuarios:
  • Estudiantes
  • Profesores

Un Profesor puede:
  • Crear, modificar o eliminar una teoría.
  • Crear, modificar o eliminar Proyectos.
  • Crear, modificar o eliminar una Periodo Académico.
  • Crear, modificar o eliminar Secciones.
  • Consultar Alumnos.
  • Otorgar Privilegios de Proyectos a los Estudiantes.
  • Consultar Records.
  • Crear, Modificar o Eliminar su Perfil.

Un Estudiante puede:
  • Crear, Modificar o Eliminar su perfil.
  • Consultar la Teoría.
  • Consultar los Proyecto bajo los que tenga permiso.
  • Consultar Estadísticas Globales.
  • Consultar Estadísticas o record Personales .

Este fue el primer enfoque, en el cual creamos las tablas para ver como quedaría mas o menos la Base de Datos.


Luego de tener el primer modelo, nos sentamos a ver donde estamos redundando y cuáles son los posibles caminos de consulta y salió el segundo modelo de Base de Datos el cual está sujeto a más cambios en los próximos días.



El modelo va a crecer mucho mas pero este es una base de cómo se vería, esta prestado a crecer más por el lado de crear proyectos ya que no hemos puesto todas las posibles tablas que va asociadas a proyecto ya que no se ha planteado los componentes que van asociados a él y los posibles problemas de los mismos. Pero se estiman 10 tablas mas asociadas a proyecto.

domingo, 12 de abril de 2009

Prueba Ape Physics - Flex 3

Nota: Haz Click sobre el ejemplo, dentro de la zona gris claro.




Esto es una prueba de la librería APE Physis, les posteo el código el cual fue tomado en principio por un ejemplo posteado y fue modificado por nosotros para ver el desempeño de la librería.


Codigo:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
backgroundColor="#444444"
creationComplete="initApp()" verticalAlign="top" horizontalAlign="left"  >

<mx:Script>
<![CDATA[
import flash.sampler.DeleteObjectSample;
import org.cove.ape.AbstractCollection;
import org.cove.ape.WheelParticle;
import org.cove.ape.RectangleParticle;
import org.cove.ape.AbstractParticle;
import org.cove.ape.Group;
import org.cove.ape.CircleParticle;
import org.cove.ape.Vector;
import org.cove.ape.APEngine;
[Embed(source='/assets/testApeLogo.swf', symbol='renito')]
[Bindable]
public var imgCls:Class;


private var contentHolder:Sprite=new Sprite();

private var defaultGroup:Group=new Group();

private var mousePosition:Point;
private var myTimer:Timer;

private function deleteObjects(e:TimerEvent):void
{
trace("TICK");
var len:int = defaultGroup.getAll().length-1;
var part:AbstractParticle;
for(var i:int =len; i>=0;i--){
trace((alto+100 < AbstractParticle(defaultGroup.getAll()[i]).position.y) + " "+(alto+100) +"<"+AbstractParticle(defaultGroup.getAll()[i]).position.y);
if(alto+100 < AbstractParticle(defaultGroup.getAll()[i]).position.y)
{
part = defaultGroup.getAll()[i];
defaultGroup.removeParticle(part);
delete(part as Object);

}

}
}
private function refreshTimer(e:TimerEvent):void
{
trace("NEW TIMER");
myTimer.removeEventListener(TimerEvent.TIMER,deleteObjects)
myTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,refreshTimer);
myTimer.stop();
myTimer = null;
myTimer = new Timer(10*1000,Number.MAX_VALUE);
myTimer.addEventListener(TimerEvent.TIMER,deleteObjects);
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE,refreshTimer);
myTimer.start();
}

private function initApp():void{

myTimer = new Timer(10*1000,Number.MAX_VALUE);
myTimer.addEventListener(TimerEvent.TIMER,deleteObjects);
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE,refreshTimer);
myTimer.start();
spriteWrapper.addChild(contentHolder);
addEventListener(Event.ENTER_FRAME,run);
APEngine.init(1/3);
APEngine.container=contentHolder;
APEngine.addMasslessForce(new Vector(0,9.8));


defaultGroup.collideInternal=true;


ground=new RectangleParticle(viewScreen.width/2,viewScreen.height-40,viewScreen.width-50,40,0,true);
ground.setFill(0xCCCCCC);

defaultGroup.addParticle(ground);
APEngine.addGroup(defaultGroup);
viewScreen.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
ancho = viewScreen.width;
alto= viewScreen.height;
}
private var ground:RectangleParticle;
private var ancho:Number = 0;
private var alto:Number = 0 ;
private var hijos:int =0;
private function run(e:Event):void{
APEngine.step();
APEngine.paint();

if(hijos != defaultGroup.getAll().length){
hijos = defaultGroup.getAll().length;
trace(defaultGroup.getAll().length);
}
if(ancho != viewScreen.width || alto != viewScreen.height){
defaultGroup.removeParticle(ground);
ground=new RectangleParticle(viewScreen.width/2,viewScreen.height-40,viewScreen.width-50,40,0,true);
ground.setFill(0xCCCCCC);
defaultGroup.addParticle(ground);


}

}
private function addSelectedParticle():void{
var createdParticle:AbstractParticle;
if(radiobutton1.selected)
createdParticle=createCircle();
if(radiobutton2.selected)
createdParticle=createRectangle();
if(radiobutton3.selected)
createdParticle=createWheel();

createdParticle.setFill(itemColor.selectedColor);
defaultGroup.addParticle(createdParticle);

}

private function createCircle():AbstractParticle{
var circle:CircleParticle=new CircleParticle(mousePosition.x,mousePosition.y,circleRadius.value,isFixed.selected,myMasa.value,elastico.value,roce.value);
return circle;

}
private function createRectangle():AbstractParticle{
var rectangle:RectangleParticle = new RectangleParticle(mousePosition.x,mousePosition.y,circleRadius.value*2,circleRadius.value*2,0,isFixed.selected,myMasa.value,elastico.value,roce.value);
return rectangle;
}
private function createWheel():AbstractParticle{
var wheel:WheelParticle = new WheelParticle(mousePosition.x,mousePosition.y,circleRadius.value,isFixed.selected,myMasa.value,elastico.value,roce.value,1);
return wheel;
}
private function onMouseDown(e:MouseEvent):void
{
mousePosition=new Point(e.localX,e.localY);
addSelectedParticle();
}

]]>
</mx:Script>


<mx:HBox width="100%" height="100%" >
<mx:VBox   backgroundColor="0xEEEEEE" cornerRadius="5" borderStyle="solid" borderThickness="1">
<mx:Form>
<mx:FormItem label="Forma del Objeto">
<mx:RadioButtonGroup id="particleGroup"/>
<mx:RadioButton label="Circulo" id="radiobutton1"  groupName="particleGroup" selected="true"/>
<mx:RadioButton label="Cuadrado" id="radiobutton2" groupName="particleGroup" />
<mx:RadioButton label="Rueda" id="radiobutton3" groupName="particleGroup"/>
</mx:FormItem>
<mx:FormItem label="Masa">
<mx:NumericStepper minimum="1" maximum="100000" stepSize="1000" id="myMasa" value="1"/>       
</mx:FormItem>
<mx:FormItem label="Radio/Ancho y Alto">
<mx:NumericStepper minimum="1" maximum="100" stepSize="5" id="circleRadius" value="20"/>
</mx:FormItem>
<mx:FormItem label="Constante de Elasticidad">
<mx:NumericStepper minimum="0" maximum="1" stepSize="0.01" id="elastico" value="0.3"/>
</mx:FormItem>
<mx:FormItem label="Constante de Roce">
<mx:NumericStepper minimum="0" maximum="1" stepSize="0.01" id="roce" value="0.01"/>
</mx:FormItem>
<mx:FormItem label="Color del Relleno">
<mx:ColorPicker id="itemColor" selectedColor="0xFF0000"/>
</mx:FormItem>
<mx:FormItem label="Afectado por la Fuerzas">
<mx:CheckBox id="isFixed" fontStyle="normal" fontWeight="bold" fontSize="14"/>
</mx:FormItem>
</mx:Form>
</mx:VBox>
<mx:Canvas id="viewScreen"  width="100%" height="100%"  backgroundColor="#FFFFFF" backgroundAlpha=".3" borderStyle="solid" borderThickness="1" cornerRadius="5" verticalScrollPolicy="off" horizontalScrollPolicy="off">

<mx:Image rotation="-45" alpha="1" x="{viewScreen.width/2}" y="{viewScreen.height/2}" source="{imgCls}" horizontalAlign="center" verticalAlign="middle" />

<mx:UIComponent id="spriteWrapper" width="100%" height="100%"/>

</mx:Canvas>
</mx:HBox>

</mx:Application>


Descargar Archivos:

Librerias de Fisica para Flex

Fecha - 08 de Abril de 2009

Existen varias librerías que ayudan a elaborar simulaciones físicas en el lenguaje de programación ActionScript 3.0 de los cuales vamos a probar los más atractivo, abrir los ejemplos que nos brindan y modificar el código un poco para hacer algunas cosas más de lo que hace el ejemplo que brindan las paginas para así tomar una decisión rápida sobre que librería nos conviene usar para el desarrollo.

Estas librerías básicamente usan algoritmos matemáticos que ayudan a disminuir los cálculos matemáticos o en su defecto mejorar la rapidez de los mismos para aumentar el performance y disminuir el retardo ocasionado por los cálculos matemáticos.

Librerías de Física para probar para el proyecto a desarrollar:

Tesis - Logo y Titulo del Proyecto - Software Educativo - Φsik Software

Fecha - 01 de Abril de 2009

Titulo del Proyecto: Φsik - Tracuccion "Fisíca".

El titulo salió después de una larga discusión en la cual nunca llegábamos a nada y nuetra solución fue tomar la palabra FISICA y pasarla por un traductor en los cuales colocamos las traducciones en Alemán y Griego y le dejamos una parte en español que es nuestro idioma y el nombre para el desarrollo se distribuyo en:
  • Φ = letra Griega, la cual fonéticamente se pronuncia Fi.
  • Si = decidimos dejar el sí del castellano
  • K = y la letra k la sacamos al traducir física al alemán es la ultima letra que sale en la traducción.
Logo: Con el logo no está listo aun esto es un borrador, los colores que usaremos son azul y naranja debido a que:
  • Azul:
  • Naranja:
Este Borrador no tiene los colores exactos ya que es un borrador y fue como un pre diseño usando cualquier color para luego colocar bien los colores que son y la letra del título del proyecto no son los expuestos aun estamos viendo tipos de letras las cuales sea lo más acorde a nuestro deseo y sea representativo con lo que queremos presentar y resaltar a primera vista .


Investigacion en la Ucab sobre la Tesis

Fecha - 25 de Marzo de 2009

En la mañana hablamos con Olga en la mañana para darle nuestra prupuesta y nos recomendara con alguien.

Ella se quedo con la propuesta y dijo que para no perder tiempo podíamos pasar por Modulo 6 piso 3 y por modulo 4 piso 4 los cuales nos podrían brindar un buen aporte a nuestra investigación y apoyo en el mismo.

Fuimos a Modulo 6 piso 3, hablamos con Mariela Adrian en la cual luego de una clase muy corta pero muy enriquecida de las formas de aprendizaje y estaba orientado a el aprendizaje por medios de información de tecnología como lo es un computador.

Luego nos recomendó leer un libro:
  • Titulo: Diseños y programas educativos. Pautas pedagogicas para la elaboracion de software.
  • Autor: Begoña Gros
  • Editorial: Ariel.

Y también nos brindo su correo para cualquier duda durante nuestro desarrollo.

Correo Ucab: madrian@ucab.edu.ve.

Luego Fuimos a Modulo 4 piso 4. Nos recomendaron a una profesora a la cual intentamos estar en contacto con la misma mediante una carta, ya que no estaba en las instalaciones para ese día que fuimos.

Luego discutimos un poco en el trascurso de la tarde en como íbamos a repartirnos el tiempo para empezar con el diseño de el proyecto.

sábado, 11 de abril de 2009

Desarrollo de un Software educativo para estimular, apoyar y reforzar el aprendizaje de Física General I en estudiantes del ciclo básico de la escuela


UNIVERSIDAD CATÓLICA ANDRÉS BELLO
Facultad de Ingeniería
Escuela de Ingeniería Informática
Caracas – Montalbán.






PROPUESTA PARA EL TRABAJO ESPECIAL DE GRADO
“Desarrollo de un Software educativo para estimular, apoyar y reforzar el aprendizaje de Física General I en estudiantes del ciclo básico de la escuela de Ingeniería Informática”.




Tutor
  • José Manuel Marino

Tesistas
  • René R. Ramírez Szabó - Exp. 116334
  • Yaridelis M. Romero Marín - Exp. 110949
Planteamiento del Problema
Para lograr una evolución en la sociedad y en el sistema de enseñanza de la actualidad es necesario iniciar procesos de mejora en el sistema educativo que conduzcan a una enseñanza de calidad que sea accesible y de fácil manejo. Estos procesos involucran la comprensión y aprendizaje de los conceptos básicos de la materia incorporando elementos dinámicos que permitan asimilar el contenido sin que esto se convierta en una tarea aburrida y en ocasiones muy complicada, ya que estas condiciones generan deficiencias en el aprendizaje provocando que el estudiante pierda el interés por aprender y se dedique sólo a estudiar por aprobar la materia.

Se plantea entonces la posibilidad de la utilización de las Tecnologías de Información en el proceso de enseñanza-aprendizaje de la cátedra de Física General I mediante recursos didácticos y dinámicos que promuevan procesos de aprendizaje, en los que se asuma que no todos los individuos aprenden de la misma manera, con el mismo ritmo e interés, al mismo tiempo que generan cambios en la enseñanza por parte del docente y la orientan hacia otros campos de interés estimulando la investigación hacia otras áreas.

Actualmente existen varias universidades a nivel nacional que están incorporando el sistema de educación a distancia y clases semi-presenciales, que permiten realizar un uso eficiente de los recursos tanto físicos como económicos de la institución al incluir software que permite simular el contenido de algunas materias.

Con el fin de desarrollar habilidades de aprendizaje de la cátedra de Física General I, se propone incorporar un software educativo (SE) que permita comprender, asimilar y aprender los contenidos dictados dentro de la materia por parte del alumnado y mejorar los procesos de enseñanza por parte de los profesores. De esta manera, la incorporación paulatina de dicho SE permitirá expandir el campo de competitividad con otras universidades en el área de la educación a distancia y clases semi-presenciales, ofreciendo mayores posibilidades y alternativas educativas.

Objetivos
General:
• Desarrollar un software educativo para apoyar el aprendizaje de la Cátedra de Física General I en estudiantes del ciclo básico de la escuela de Ingeniería Informática.

Específicos:
• Analizar el contenido programático de la Cátedra de Física General I ofrecida por la Escuela de Ingeniería Informática para identificar los requerimientos necesarios para la elaboración del software.
• Evaluar y seleccionar las técnicas más adecuadas para el desarrollo en las que se basa la elaboración de software educativo así como sus principios básicos.
• Diseñar, desarrollar e implementar un software educativo para apoyar el proceso de enseñanza-aprendizaje de la cátedra.
• Diseñar, desarrollar e implementar un módulo de administración de contenidos para hacer posible la incorporación de nuevo material al software.
• Evaluar el impacto de la incorporación y utilización de dicho software sobre los alumnos y profesores.

Justificación
La creciente utilización de las tecnologías de información en casi todos los aspectos de la vida diaria y la necesidad de hacer el proceso de enseñanza más ágil e interactivo, fundamentan las bases del desarrollo de software educativo (SE). Un SE es un componente cuyas características estructurales y funcionales sirven de apoyo al proceso de enseñar y aprender.

Para el desarrollo de un SE, es necesario considerar la motivación e interés, evitando que el proceso sea largo y complicado tanto para los alumnos como para los profesores. En la actualidad, la idea de utilizar recursos adicionales a los dados en clase que permitan reforzar y colaborar con el aprendizaje, son positivamente recibidos por todas las partes. Con esto es factible pensar que si se presenta al alumnado un recurso que les permita comprender, asimilar y aprender el contenido de la cátedra de Física General I, así como a los profesores un recurso que los ayude en el proceso de enseñanza, se estimulará el uso de este SE y se extenderán sus aplicaciones y campos de acción.

Es así como en este trabajo de grado se trabajará en el uso de las aplicaciones informáticas para desarrollar un SE, vinculado con el contenido programático de la cátedra de Física General I, que estimule, apoye y refuerce el estudio y aprendizaje de la cátedra, además de proponer una estrategia educativa incorporando un módulo de administración que permita al profesor incorporar nuevos contenidos y de esta manera el SE pueda actualizarse y se convierta en una herramienta dinámica.

Alcance

• El alcance de este proyecto se extiende hasta el desarrollo de un software educativo que permita modificar y simular ejercicios de la Cátedra de Física General I, de manera específica en Física/Mecánica Newtoniana, en el área de Cinemática (en una y dos dimensiones), que permita la auto evaluación por parte del alumno y la comprensión del contenido.
• Se realizará la evaluación del SE para estimar el grado el cumplimiento de los objetivos planteados.

Limitaciones
• Inicialmente, el módulo de administración de contenidos diseñado para profesores, sólo podrá alterar los ejercicios básicos, modificando valores estándar de la Cátedra de Física I (como masa, velocidad, gravedad, roce, etc).
• El SE estará desarrollado sólo para ambientes Web, basado en los tipos de aplicaciones RIA (Rich Internet Application), permitiendo así su utilización a distancia.
• Los requerimientos del SE, serán orientados por el departamento de Física de la Facultad de Ingeniería.
• El espacio muestral se limita a un grupo significativo de estudiantes en condición de repitientes de donde se selecciona una muestra de estudio, con la cual se obtendrán los resultados aplicando instrumentos de evaluación, evaluando el impacto de la incorporación del SE, pudiendo ser comparado con los resultados obtenidos anteriormente, salvando posibles correlaciones con otros aspectos influyentes en el rendimiento del estudiante.