miércoles, 26 de octubre de 2011

Prueba2 SyntaxHighLighter: VB.NET

El código mostrado en ésta prueba corresponde a una parte de mi biblioteca Motor3D, en concreto la rutina de cálculo de determinantes de la clase Matriz.

Public Shared Function Determinante(ByVal Matriz As Matriz) As Double
If Matriz.Filas = Matriz.Columnas Then
Dim Positivos, Negativos As Double

Select Case Matriz.Filas
Case 1
Return Matriz.ObtenerValor(0, 0)
Case 2
Positivos = Matriz.ObtenerValor(0, 0) * Matriz.ObtenerValor(1, 1)
Negativos = Matriz.ObtenerValor(0, 1) * Matriz.ObtenerValor(1, 0)

Return Positivos - Negativos
Case 3
Positivos = (Matriz.ObtenerValor(0, 0) * Matriz.ObtenerValor(1, 1) * Matriz.ObtenerValor(2, 2)) + _
(Matriz.ObtenerValor(0, 1) * Matriz.ObtenerValor(1, 2) * Matriz.ObtenerValor(2, 0)) + _
(Matriz.ObtenerValor(1, 0) * Matriz.ObtenerValor(2, 1) * Matriz.ObtenerValor(0, 2))

Negativos = (Matriz.ObtenerValor(0, 2) * Matriz.ObtenerValor(1, 1) * Matriz.ObtenerValor(2, 0)) + _
(Matriz.ObtenerValor(0, 1) * Matriz.ObtenerValor(1, 0) * Matriz.ObtenerValor(2, 2)) + _
(Matriz.ObtenerValor(1, 2) * Matriz.ObtenerValor(2, 1) * Matriz.ObtenerValor(0, 0))

Return Positivos - Negativos

Case Else
Dim Retorno As Double = 0
For i As Integer = 0 To Matriz.Filas - 1
Retorno += (Adjunto(Matriz, i, 0) * Matriz.ObtenerValor(i, 0))
Next

Return Retorno
End Select

Else
Throw New ExcepcionMatrizNoCuadrada("MATRIZ (DETERMINANTE): Solo se puede obtener el determinante de matrices cuadradas." & vbNewLine _
& "Dimensiones de la matriz: " & Matriz.Filas & "x" & Matriz.Columnas)
End If
End Function

Bastante bien, pero me quita la tabulación...Ya le encontraré solución.

Código fuente completo en http://www.mediafire.com/file/d4pdlvrym4tq2n1/Motor3D%202.0.rar

No hay comentarios:

Publicar un comentario