25.10.2014 Views

Tesis Simulador Circuitos 3D.pdf - Maestría en Ciencias de la ...

Tesis Simulador Circuitos 3D.pdf - Maestría en Ciencias de la ...

Tesis Simulador Circuitos 3D.pdf - Maestría en Ciencias de la ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Seccion <strong>de</strong> ACTIVACION DE COMPORTAMIENTO EN <strong>3D</strong><br />

//<br />

// -----------------------------------------------------------<br />

public function activarComportami<strong>en</strong>to<strong>3D</strong>(factorEsca<strong>la</strong><strong>3D</strong>:Number,<br />

esca<strong>la</strong><strong>3D</strong>_corri<strong>en</strong>te:Object):void {<br />

// --- Inicializa compon<strong>en</strong>te ---<br />

colocarCompon<strong>en</strong>teEspacio<strong>3D</strong>(factorEsca<strong>la</strong><strong>3D</strong>);<br />

// --- Activar corri<strong>en</strong>te ---<br />

activarCorri<strong>en</strong>te(esca<strong>la</strong><strong>3D</strong>_corri<strong>en</strong>te);<br />

}<br />

public function colocarCompon<strong>en</strong>teEspacio<strong>3D</strong>(factorEsca<strong>la</strong><strong>3D</strong>:Number):void {<br />

removerList<strong>en</strong>ers();<br />

// Coloca el compon<strong>en</strong>te a una altura igual al punto medio <strong>de</strong> <strong>la</strong>s<br />

// coord<strong>en</strong>adas "z" <strong>de</strong> cada terminal y aplica el factor <strong>de</strong> esca<strong>la</strong><br />

// para normalizar <strong>la</strong> altura <strong>de</strong>l compon<strong>en</strong>te<br />

cont<strong>en</strong>edorGrafico.z = factorEsca<strong>la</strong><strong>3D</strong>*(Vnodo1 + Vnodo2)/2;<br />

// Actualiza <strong>la</strong> coord<strong>en</strong>ada "z" <strong>de</strong>l compon<strong>en</strong>te<br />

datosCompon<strong>en</strong>te[0][4] = cont<strong>en</strong>edorGrafico.z;<br />

calcu<strong>la</strong>DistanciaAngulo(factorEsca<strong>la</strong><strong>3D</strong>);<br />

}<br />

// Rota, esca<strong>la</strong> y ori<strong>en</strong>ta el compon<strong>en</strong>te <strong>de</strong> acuerdo a los resultados<br />

cont<strong>en</strong>edorGrafico.rotationY = -angulo;<br />

lineaGrafica.scaleX = distancia/40;<br />

public function calcu<strong>la</strong>DistanciaAngulo(factorEsca<strong>la</strong><strong>3D</strong>:Number):void {<br />

}<br />

<strong>de</strong>ltaV = Vnodo2 - Vnodo1;<br />

// Aplica el factor <strong>de</strong> esca<strong>la</strong> <strong>en</strong> <strong>3D</strong> para normalizar <strong>la</strong> difer<strong>en</strong>cia<br />

// <strong>de</strong> voltajes <strong>en</strong>tre <strong>la</strong>s terminales <strong>de</strong>l compon<strong>en</strong>te<br />

dv = factorEsca<strong>la</strong><strong>3D</strong>*<strong>de</strong>ltaV;<br />

// Calcu<strong>la</strong> distancia geometrica <strong>en</strong>tre terminales <strong>de</strong>l compon<strong>en</strong>te<br />

distancia = Math.sqrt(dv*dv + 1600);<br />

// Calcu<strong>la</strong> angulo <strong>de</strong> <strong>la</strong> terminal 1 a <strong>la</strong> 2<br />

angulo = (Math.atan2(dv,40)/Math.PI)*180;<br />

private function activarCorri<strong>en</strong>te(esca<strong>la</strong><strong>3D</strong>_corri<strong>en</strong>te:Object):void {<br />

// --- CORRIENTE ---<br />

var valorCorri<strong>en</strong>te:Number;<br />

if (esca<strong>la</strong><strong>3D</strong>_corri<strong>en</strong>te.lineal) {<br />

// Repres<strong>en</strong>tacion <strong>en</strong> ESCALA LINEAL<br />

valorCorri<strong>en</strong>te = 10;<br />

} else {<br />

// Repres<strong>en</strong>tacion <strong>en</strong> ESCALA LOGARITMICA<br />

var corri<strong>en</strong>teMinima:Number =<br />

esca<strong>la</strong><strong>3D</strong>_corri<strong>en</strong>te.corri<strong>en</strong>teMinima;<br />

var factor_conversion:Number =<br />

esca<strong>la</strong><strong>3D</strong>_corri<strong>en</strong>te.factor_conversion;<br />

valorCorri<strong>en</strong>te = Math.ceil(factor_conversion*LN_LOG*<br />

89

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!