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.

}<br />

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

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

//<br />

// 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 />

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 />

// 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 />

// 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 />

// --- CORIIENTE ---<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 />

Math.log(Math.abs(corri<strong>en</strong>te)/corri<strong>en</strong>teMinima))+1;<br />

}<br />

if (Math.abs(corri<strong>en</strong>te) > 1e-10) {<br />

corri<strong>en</strong>teGrafica.rotationY = 180;<br />

if (corri<strong>en</strong>te

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

Saved successfully!

Ooh no, something went wrong!