Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tic 2
Tic 2
Software
Los programas informáticos o, simplemente, el software es un término general
utilizado para describir una colección de programas de computación, procedimientos
y documentación que realizar algunas tareas en un sistema informático.
El término incluye:
Software incluye sitios web, programas, juegos de vídeo, etc que están codificados
por los lenguajes de programación como C, C + +, etc
1
o Tipos de software
• Software libre
• Freeware
• Software de código abierto
• Software propietario
• Software científico
• Shareware
En la práctica, para el software que se distribuye como software libre, el formato legible
por humanos del programa (el código fuente) debe ser puesta a disposición del
beneficiario junto con una notificación de la concesión de permisos por encima. En
dichos avisos o bien es una "licencia de software libre", o un aviso de que el código
fuente se libera en el dominio público.
El movimiento de software libre fue concebido en 1983 por Richard Stallman para
satisfacer la necesidad y de dar el beneficio de "la libertad del software" para los
usuarios de computadoras. La Free Software Foundation fue fundada en 1985 para
proporcionar la estructura orgánica que prevé correctamente Stallman sería necesario
para hacer avanzar sus ideas de Software Libre.
Dado que el software libre puede ser redistribuido libremente, en general, disponible a
bajo costo o sin costo alguno. Modelos de negocio de software libre se basan
generalmente en el valor añadido, tales como aplicaciones, la asistencia, formación,
personalización, integración, o la certificación. Al mismo tiempo, algunos modelos de
negocios que trabajan con software propietario no son compatibles con el software libre,
como los que dependen de un usuario para el pago de una licencia legal para utilizar un
producto de software.
2
a pagar (por ejemplo, después de algún período de prueba o por
funcionalidad adicional).
Software de fuente abierta: (OSS) se define como los
programas informáticos para el cual el código fuente y otros
derechos normalmente reservado para los derechos de autor
previstos en los titulares de un software de licencia que cumpla
con la definición de código abierto o que está en el dominio
público. Esto permite a los usuarios a utilizar, modificar, y
mejorar el software, y redistribuirlo en formas modificadas o sin
modificar. Es muy a menudo desarrollado en público,
colaboración. Software de código abierto es el ejemplo más
destacado de código abierto de desarrollo y, a menudo, en
comparación con el contenido generado por el usuario.
El software propietario: es software que es la propiedad
legal de una de las partes. Los términos de uso de otras partes se
define por contratos o acuerdos de licencia. Estos términos
pueden incluir diversos privilegios para compartir, modificar,
disimular, y utilizar el software y su código.
Software científico:Un software o programa que se llama
científico, si el tema que aborda es científica. Incluso si
profundo conocimiento es necesario para la creación de un
software, esto solo hace que sea no necesariamente científico.
Incluso los gráficos de entretenimiento programas pueden
necesitar bastante no trivial geometría algebraica (un objeto de
la más abstracta de matemáticas), pero el software de
entretenimiento en sí rara vez es científica.
Shareware suele ofrecerse como una versión de prueba con algunas funciones
disponibles únicamente después de la licencia se compra, o como una versión completa,
pero por un período de prueba. Una vez que el período de prueba ha pasado el
programa no se ejecutará hasta que se compra una licencia. Shareware es a menudo sin
el apoyo ofrecido, las actualizaciones, o menús de ayuda, que sólo estén disponibles con
la compra de una licencia. Las palabras "prueba gratuita", "versión de prueba" son
indicativos de shareware.
El término se utiliza de shareware en contraste con, al por menor del software que se
refiere a software comercial disponible sólo con la compra de una licencia que no puede
ser copiado por los demás, y programas informáticos de dominio público que se refiere
a los programas informáticos no protegidos por derechos de autor, y freeware que se
refiere a derechos de autor software para que el autor no solicita el pago (aunque se
puede solicitar una donación).
3
Descripción
Los programas informáticos se consideran a menudo como algo pero de hardware, lo
que significa que el "duro" son las partes que son tangibles, mientras que el "suave" es
la parte inmaterial de objetos en el interior del ordenador. Software abarca una amplia
gama de productos y tecnologías desarrolladas utilizando diferentes técnicas como los
lenguajes de programación, lenguajes de scripting o incluso microcódigo o una
FPGA estado. Los tipos de software incluyen páginas web desarrollado por
tecnologías como HTML, PHP, Perl, JSP, ASP.NET, XML, y aplicaciones de
escritorio como Microsoft Word, OpenOffice desarrollado por tecnologías como C, C
+ +, Java, C #, etc software funciona normalmente subyacente en un software de
sistemas operativos tales como el Microsoft Windows o Linux. También incluye
software de juegos de vídeo y la lógica de los modernos sistemas de dispositivos de
consumo tales como automóviles, televisores, tostadoras, etc
Equipo de software se llama así para distinguirla de los equipos informáticos, que
abarca la interconexión física y los dispositivos necesarios para almacenar y ejecutar (o
ejecutar) el software. En el nivel más bajo, el software se compone de un lenguaje
máquina específico para un procesador individual. Un lenguaje de máquina se compone
de grupos de valores binarios que significa procesador de instrucciones que cambiar el
estado de la computadora de su anterior estado. El software es una secuencia ordenada
de instrucciones para cambiar el estado del equipo en una secuencia. Por lo general, es
escrito en alto nivel, lenguajes de programación que son más fáciles y más eficaces
para los seres humanos a usar (más cerca de lenguaje natural) que en lenguaje de
máquina. Idiomas de alto nivel son compilados o interpretados en lenguaje de máquina
de código objeto. El software también puede ser escrito en un lenguaje ensamblador,
en esencia, una representación de un mnemotécnico lenguaje de máquina en lenguaje
natural utilizando un alfabeto. Lenguaje ensamblador debe ser ensamblado en el código
objeto a través de un ensamblador.
El término "software" fue utilizado por primera vez en este sentido por John W. Tukey
en 1958. En ciencias de la computación y la ingeniería de software, programas
informáticos es todo los programas de ordenador. La teoría de que es la base para la
mayoría de software moderno fue propuesta por primera vez por Alan Turing en su
ensayo de 1935 los números computables, con una solicitud a la
Entscheidungsproblem.
Tipos de software
4
Una capa que muestra que la estructura del sistema operativo se encuentra en general,
utilizan sistemas de software en equipos de sobremesa
El sistema de software
• controladores de dispositivo,
• sistemas operativos,
• servidores,
• servicios públicos,
• Faraware,
• sistemas de ventanas,
Programación de software
• compiladores,
• depuradores,
• intérpretes,
5
• enlaces,
• editores de texto,
Un entorno de desarrollo integrado (IDE) es una única solicitud que los intentos de
gestionar todas estas funciones.
Aplicación de software
Software de aplicación permite a los usuarios finales a realizar uno o más específicos
(que no están directamente relacionados con el equipo de desarrollo) tareas. Las
aplicaciones típicas incluyen:
• automatización industrial,
• empresas de software,
• juegos de ordenador,
• telecomunicaciones (es decir, el Internet y todo lo que fluye en ella)
• bases de datos,
• software educativo,
• programas informáticos médicos,
Software de temas
Arquitectura
A menudo, los usuarios vean las cosas de manera diferente a los programadores. Las
personas que usan modernos ordenadores de propósito general (a diferencia de los
sistemas integrados, equipos analógicos, los superordenadores, etc) suele ver tres
capas de software de realización de una variedad de tareas: la plataforma, la aplicación
y el software del usuario.
6
compiladores, bases de datos, y otros "del software del sistema" como
aplicaciones.
• Escritos por el usuario de software: el desarrollo de usuario final sastres
usuarios de los sistemas para cumplir las necesidades específicas. Software del
usuario incluyen plantillas de hoja de cálculo, procesador de textos macros,
simulaciones científicas, y guiones para gráficos y animaciones. Incluso filtros
de correo electrónico son un tipo de software del usuario. Este software los
usuarios crear y pasar por alto a menudo lo importante que es. Dependiendo de
cómo el usuario competente escritas software ha sido integrado por defecto en la
aplicación de paquetes, muchos usuarios pueden no ser conscientes de la
distinción entre los embalajes de origen, y lo que ha sido añadido por los
compañeros de trabajo.
Documentación
La mayoría del software tiene la documentación del software de modo que el usuario
final pueda entender el programa, lo que hace y cómo usarlo. Sin una clara
documentación de software puede ser difícil de usar y sobre todo si se trata de una muy
especializadas y relativamente complejos, como el software de Photoshop, Autocad,
etc
Biblioteca
Norma
Ejecución
7
Programas de ordenador tiene que ser "cargados" en el equipo de almacenamiento
(como un [disco duro], la memoria, o RAM). Una vez que ha cargado el software, el
ordenador es capaz de ejecutar el software. Esto implica pasar de instalación de la
aplicación de software, a través del software de sistema, al equipo que finalmente
recibe la instrucción de código de máquina. Cada instrucción hace que el equipo para
llevar a cabo una operación - movimiento de datos, la realización de un cálculo, o
alterar el control de flujo de instrucciones.
Calidad y fiabilidad
Licencia
Patentes
8
Artículo principal: sobre las patentes de software y el debate sobre las patentes de
software
Software puede ser patentado, pero las patentes de software pueden ser objeto de
controversia en la industria del software con muchas personas que tienen opiniones
diferentes sobre el mismo. La controversia sobre las patentes de software es que un
algoritmo o técnica que tiene el software no puede ser duplicado por otros y es
considerado uno de propiedad intelectual y la infracción del derecho de autor,
dependiendo de la gravedad. Algunas personas creen que las patentes de software
dificultan el desarrollo de software, mientras que otros sostienen que las patentes de
software proporcionan un incentivo importante para estimular la innovación de
software.
Ética y derechos
Mientras que algunos defensores del software libre el uso de lemas tales como "la
información quiere ser libre", indicando que es fácil de copiar datos digitales y que las
licencias (en vigor a través de leyes) no son naturales restricciones, otros creadores y
usuarios de software de código abierto lo reconocen a ser un modelo entre muchos para
la creación de software, la concesión de licencias y la distribución. Y las leyes son para
poner en marcha el aparente propósito de aumentar la producción creativa, al permitir a
los creadores a controlar y beneficiarse de manera más eficaz de su propiedad
intelectual.
Diseño y aplicación
Artículo principal: Desarrollo de software, de programación, y la ingeniería de
software
9
programa existente y la interfaz de programación de aplicaciones (API) que
proporciona el software subyacente, como GTK +, JavaBeans, Swing, etc Bibliotecas
(API) se clasifican para fines diferentes. Por ejemplo JavaBeans biblioteca se utiliza
para el diseño de las aplicaciones de empresa, Windows Forms biblioteca se utiliza
para el diseño de interfaz gráfica de usuario (GUI) de aplicaciones como Microsoft
Word y Windows Communication Foundation se utiliza para el diseño de servicios
web. También hay que subyacen los conceptos de programación de computadoras
como quicksort, HashTable, variedad, árbol binario que puede ser útil a la creación
de un software. Cuando un programa está diseñado, se basa en la API. Por ejemplo, si
un usuario está diseñando una aplicación de escritorio de Microsoft Windows, el que
pueda utilizar el. NET biblioteca de Windows Forms para el diseño y la aplicación de
escritorio llamada como su API Form1.Close () y Form1.Show () para cerrar o abrir la
aplicación y escribir las operaciones a sí mismo que necesita tener. Sin estas API, el
programador necesita escribir estas API a sí mismo. Empresas como Sun
Microsystems, Novell y Microsoft proporcionan sus propias APIs para que muchas
aplicaciones se escriben usando sus librerías de software que suelen tener numerosos
APIs en ellos.
También la venta de un software puede ser un sector rentable. Por ejemplo, Bill Gates,
fundador de Microsoft es el segundo hombre más rico del mundo en 2008 en gran parte
por la venta de Microsoft Windows y Microsoft Office programas de software, y el
mismo puede decirse de Larry Ellison en gran medida a través de su base de datos de
Oracle de software.
También hay muchos programas sin fines de lucro, organizaciones como la Fundación
para el Software Libre, proyecto GNU, Fundación Mozilla. También hay muchas
organizaciones como el software estándar de la W3C, IETF y otros que tratan de llegar
a un estándar de software de modo que muchos de software y puede interoperar con el
trabajo unos a otros como a través de normas tales como XML, HTML, HTTP, FTP,
etc
10
Algunas de las bien conocidas empresas de software incluye Microsoft, Apple, IBM,
Oracle, Novell, SAP, HP, etc
Así pues, este punto de luz desaparece en el momento en que el fósforo vuelve a
su estado de reposo; el tiempo en que esto tarda en ocurrir define una de las propiedades
mas importantes para diferenciar entre dos fósforos: la persistencia, que se define como
11
el tiempo que tarda en disminuir la luz emitida por la pantalla a un décimo de su
intensidad inicial. Valores típicos son de 10 a 60 microsegundos.
Por lo tanto, si deseamos mantener una imagen visible en el CRT deberemos re-
generarla a una velocidad superior a la que tarda en desaparecer de la pantalla. Los
fósforos de menor persistencia serán mas adecuados para animación; mientras que para
mostrar imágenes estáticas puede ser suficiente un monitor más "lento".
Otra propiedad importante de los tubos es su resolución, generalmente definida
simplemente como el máximo número de puntos luminosos que se pueden diferenciar.
Dado que la luminosidad de un punto decae desde el centro hacia su periferia, se
considera que dos puntos son diferentes cuando su separación es mayor del diámetro en
el que el punto tiene aproximadamente el 60% de la luminosidad del centro del mismo.
Es fácil encontrar monitores que soportan hasta 1280x1024; a partir de esta resolución
se suele hablar de sistemas de alta definición.
También caracteriza a un tubo su "relación de aspecto", o relación entre la
resolución horizontal y la vertical. La mas frecuente es de 4:3, aunque empiezan a
aparecer relaciones "panorámicas" o 16:9, más apropiadas p.e. para cine en alta
definición.
Monitores de barrido.
En el tipo de monitor con CRT más utilizado el haz de electrones recorre la punto
por punto en dirección longitudinal y línea por línea en dirección vertical, variando su
intensidad en cada punto de acuerdo con la luminosidad correspondiente al punto de la
imagen correspondiente que se pretende representar. La intensidad de cada uno de estos
puntos de imagen, conocidos como "pixels", debe estar almacenada en la memoria del
ordenador (a la memoria encargada de contener esta información se le denomina búfer
de pantalla o frame buffer); si p.e. para representar la intensidad de un pixel se utilizan
24 bits, para una pantalla de 1024 x 1024 se necesitan 3 Mb de memoria.
La velocidad a que se realiza este barrido (evidentemente, relacionada con la
persistencia del fósforo) suele darse como característica del monitor; tanto en la forma
de frecuencia de barrido vertical (para toda la imagen), que suele oscilar entre los 50 y
los 80 Hz y la frecuencia de barrido horizontal (para cada línea) que suele ser del orden
de los 40 KHz. Por lo general, una frecuencia mas alta, por lo general, es conveniente
para disminuir la fatiga visual, y necesaria cuando se desea generar imágenes a gran
velocidad (p.e. pares de imágenes estereoscópicas en tiempo real a velocidades de
refresco tales que el ojo no distinga "parpadeos").
En algunos monitores realiza el barrido vertical en dos fases, en la primera se
recorren las líneas impares, y en la segunda las pares. De esta forma se consigue una
frecuencia aparente doble de la real (aparente en el sentido de que cada imagen se
genera en la mitad de tiempo, aunque, evidentemente la imagen contenga la mitad de la
información de la real). Este sistema se utiliza en los televisores domésticos, lo que
puede aprovecharse también para conseguir una mayor suavidad en las animaciones
generadas por ordenador: Efectivamente, en lugar de generar una imagen cada p.e. 1/60
segundo, se genera la mitad de la imagen cada 1/120 segundo, con lo que el tiempo de
cálculo es el mismo y el movimiento más continuo.
12
En este sistema, actualmente menos utilizado, el haz de electrones en lugar de
recorrer la pantalla a base de pixels, traza una serie de segmentos correspondientes a las
líneas de la imagen que se pretende representar.
Así, la imagen está definida en memoria como una sucesión de instrucciones de
trazado y movimiento aleatorio; y esta serie de instrucciones son ejecutadas por el haz
de electrones un mínimo de 30 veces por segundo. Los sistemas vectoriales de alta
calidad pueden llegar a manejar imágenes con 100.000 líneas; cuando la imagen tiene
muy pocas líneas se introduce un retraso entre redibujados, ya que de otra forma se
podría llegar a quemar el fósforo.
Los monitores CRT en color utilizan una combinación de fósforos que emiten luz
con colores distintos, colores básicos que combinados producen la sensación de los
colores del espectro que se deseen.
Estos monitores utiliza principalmente la técnica de la "máscara de sombra".
Partiendo de un tubo con tres fósforos que emiten, para cada punto, luz roja, verde y
azul, y con tres cañones de electrones, los tres haces de electrones se enfocan y se hacen
coincidir sobre la máscara, que contiene una serie de orificios alineados con los patrones
de punto de fósforo. Cuando los tres haces pasan por un orificio activan el triángulo
correspondiente, que se ve como un punto de color.
La intensidad de cada haz se controla independientemente, y por lo general se
considera que con una resolución de 8 bits para cada uno (24 en total, por lo tanto), es
decir, 256 niveles de voltaje por cañón para un total de 256 al cubo (16 Millones) de
colores, se obtiene "color real" (haciendo referencia a la incapacidad del ojo humano de
distinguir diferencias al aumentar la cantidad de niveles por componente).
Los monitores de cuarzo líquido utilizan dos placas de cristal que contienen cada
una un polarizador de luz girado 90 grados una respecto a la otra. Estas placas prensan
el cuarzo liquido (con estructura cristalina, pero con moléculas capaces de fluir como en
estado líquido). En una de las placas se crean líneas verticales de conductores
transparentes, y en la otra, horizontales. La intersección de las líneas define los pixels,
de forma que cuando existe voltaje ambos conductores en ambos conductores las
moléculas se alinean y la luz que atraviesa el cristal no gira y por lo tanto no atraviesa el
segundo cristal.
Cuando la luz se genera mediante un transistor en cada pixel, se habla de pantallas
LCD de matriz activa, siendo esta la tecnología más utilizada en la actualidad.
Aparte de eso, la representación de la información es similar a la de los monitores
CRT de barrido: también se utiliza el bufer de pantalla con la imagen formada por
pixels.
Software de gráficos.
Introducción
13
Según se ha visto, por lo general vamos a necesitar una representación gráfica
consistente en un conjunto de pixels a partir de una idea de más alto nivel; como pueda
ser la descripción de la gráfica en términos de líneas, arcos, colores etc. o incluso en
términos de objetos tridimensionales, puntos de vista e iluminación.
El como llegar de estas descripciones de alto nivel al conjunto de pixels final es
algo de lo que las diferentes partes del sistema se deberán encargar; por lo general el
programador dispone de una serie de librerías de programación gráfica que le permiten
escribir aplicaciones sin tener que llegar a conocer en detalle el hardware sobre el que se
ejecutará su código, y sin tener que reescribir de cero miles de procedimientos que,
además, distan de ser triviales. Ejemplos de estas librerías podrían ser OpenGL de SGI
y Direct3D de Microsoft.
Por lo general, estas librerías permiten trabajar creando estructuras en un sistema
de coordenadas local, integrar estas estructuras en una escena más compleja que utiliza
un sistema de coordenadas global o "de mundo". De algún modo, el software
transformará estas coordenadas a unas coordenadas de dispositivo normalizado
(independiente de las características físicas del dispositivo real) y en un último paso
estas se ajustarán al rango de salida del dispositivo final.
Los bloques de construcción básicos que ofrece una librería se conocen como
"primitivas" y pueden incluir desde un mínimo de líneas, círculos, caracteres, etc. en
dos dimensiones hasta mallas de polígonos tridimensionales, definiciones de luces, etc.
Trazado de líneas
14
y=mx+b
donde
∆ y= ( y2 - y1 )
∆ x = ( x2 - x1 )
m=∆ y/∆ x
b = y1 - m x1
d1 = y - yk = m (xk + 1) + b – yk
d2 = yk + 1 - y = yk + 1 – m (xk + 1) – b
y
d1 - d2 = 2 m (xk + 1) – 2 yk + 2 b – 1
pk = ∆ x ( d1 - d2 ) = 2 ∆ y xk - 2 ∆ x yk + 2 ∆ y + ∆ x ( 2b-1 )
15
pk = ∆ x ( d1 - d2 ) = 2 ∆ y xk - 2 ∆ x yk + c
donde hemos sustituido 2 ∆ y + ∆ x ( 2b-1 ) por c como constante.
Aquí ya se ve que el signo de pk indica si la distancia d1 es mayor o menor que d2,
y por tanto, si se habrá de elegir y k+1 o yk.
Desarrollando, se llega a la expresión de pk+1 como
p0 = 2 ∆ y - ∆ x
Antialiasing
Otras primitivas.
Aparte del trazado de líneas, otras primitivas importantes como conceptos pueden
ser:
• • Caracteres
• • Transformaciones (giros, escalas, distorsiones)
• • Atributos de las primitivas (tipo de línea, color)
16
• • Llenado de áreas, es decir, el considerar un área cerrada de un
color sólido. Conviene notar que algo que a primera vista puede parecer
sencillo, como el llenar un polígono de determinado color, en la practica
resulta también complicado, recurriéndose sobre todo a dos tipos de
algoritmos:
1: Recorrido de todas las líneas de pixels de la pantalla buscando
intersecciones con los límites del polígono.
Esto suele conllevar abundantes cálculos.
2: Procedimientos recursivos a partir de un punto. Se comienza en
un punto y se repite a partir de todos sus vecinos a no ser que se
encuentre una condición de frontera.
• • Algoritmos de recorte de líneas: Por lo general, una vez
transformadas las coordenadas de las líneas será necesario determinar que
partes de las líneas son visibles dada una ventana de visualización.
Primitivas 3D
Veamos algunas primitivas típicas, en este caso de OpenGL, con objeto de tener
una idea mas clara del tipo de programación necesaria para trabajar con librerías
gráficas.
Atributos de primitivas:
Tamaño de puntos - void glPointSize(GLfloat size)
Anchura de líneas - void glLineWidth(GLfloat width)
Modo de Polígonos -
glPolygonMode(GL_FRONT, GL_FILL)
glPolygonMode(GL_BACK, GL_LINE)
define que los polígonos seran "llenos" vistos por delante
y formados por líneas ("huecos") por detrás.
Vértices:
Posición - void glVertex3dv( const GLdouble *v )
Normales - void glNormal3fv( const GLfloat *v )
Polígonos:
Por lo general se definen mediante secuencias de vértices,
aunque lo mas utilizado con diferencia son simplemente los
triángulos. De hecho por lo general cualquier primitiva 3D
compleja es descompuesta en triángulos de forma
transparente al programador.
Ejemplo de polígono:
glBegin (GL_POLYGON);
glNormal3fv(n0);
glVertex3fv(v0);
glNormal3fv(n1);
glVertex3fv(v1);
glNormal3fv(n2);
17
glVertex3fv(v2);
glNormal3fv(n3);
glVertex3fv(v3);
glEnd();
Aunque como hemos dicho la descomposición puede ser realizada por el sistema,
por lo general es mas recomendable, desde el punto de vista de la eficiencia, que sea el
programador el que efectúe manualmente dicha descomposición; ya que por lo general
llegara a mejores resultados que una descomposición automática.
Transformaciones geométricas:
Como es sabido, todas las operaciones de posicionado de primitivas en una
escena, modificación de las mismas y proyección sobre el plano se lleva a cabo
mediante operaciones con matrices; por lo que todas las librerías gráficas ofrecen
facilidades para trabajar con este tipo de datos. Conviene notar que todos los productos
de matrices se llevan a cabo internamente en la librería (o en el sistema gráfico, en el
caso más general), y por lo tanto los resultados numéricos no tienen por que estar
disponibles para el programador.
Ejemplos de estas transformaciones son:
Matriz de rotación –
void glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat
z )
Matriz de traslación –
void void glTranslatef( GLfloat x, GLfloat y, GLfloat z )
Matriz de escalado –
void glScalef( GLfloat x, GLfloat y, GLfloat z )
18
Conceptos
Bufer de pantalla
Un sistema básico típico de hoy en día asignará 8 bits para cada componente de
color, dando así la impresión de "color real" como ya se ha dicho anteriormente.
Ahora bien, en sistemas con un mayor numero de bits por pixels, el sistema
dispone de espacio adicional, espacio que es posible utilizar para por ejemplo almacenar
una segunda imagen (casos de visión estereoscópica o animación por doble bufer),
19
mapas de profundidad o "Z bufer" o capas auxiliares (para detalles auxiliares, como p.e.
cursores)
Z Bufer
Mapeado de texturas
Una forma muy común de mejora la apariencia de una imagen sintética consiste
en la aplicación de una imagen real (fotográfica) sobre la superficie que se pretende
representar. Podemos pensar por ejemplo en la definición de una fachada de un edificio.
El modelo real debería incluir millones de polígonos para reflejar no solo la
complejidad del la geometría básica (portales, ventanas, etc.) si no todo tipo de
imperfecciones, abolladuras, etc.; por no mencionar la descripción precisa de cada uno
de los materiales. El reemplazar esto por un simple plano con la foto de un edificio real
pegada simplifica enormemente la escena, y los resultados son por lo general muy
buenos.
La forma de realizar esta aplicación consiste en hacer corresponder a cada punto
del polígono un punto de la textura.
Hay varios puntos a tener en cuenta: Este mapeado deberá realizarse de forma que
se mantenga la continuidad entre polígonos adyacentes. De otra forma se pierde la
sensación de realismo.
Al aplicar la textura, no basta una simple aplicación lineal, ya que debe tenerse en
cuenta la corrección debida a la perspectiva.
20
El tamaño de la textura será un compromiso entre la calidad de imagen deseada y
la memoria disponible para almacenarla. Dado que el acceso a los datos de la(s) texturas
es continuo, estas deberán estar almacenadas por lo general, en memoria rápida
especialmente destinada a tal fin.
La idea es la misma que la vista para líneas en 2D: evitar que las aristas
proyectadas presenten "escalones". El efecto de aliasing es incluso peor en animaciones,
dado que mínimos cambios de posición pueden determinar efectos de aliasing
totalmente distintos, lo que produce la sensación de que "algo se mueve" en los bordes
de los objetos.
Un método primitivo consiste en procesar la imagen final ya proyectada y
examinar los pixels, suavizando las diferencias entre pixels adyacentes. Es simple y
rápido.
En un método mucho más costoso se tomarán varias muestras (el concepto de
"sub-pixels" otra vez) para calcular el color final del pixel.
Y por último otro método que puede resultar más costoso consiste en hacer
"vibrar" la imagen (mediante cambios mínimos de posición del punto de vista) y
realizar una media entre las imágenes calculadas. Es probablemente el que da mejores
resultados, pero también el más costoso.
21
Para solucionar esto, una posible técnica consiste en almacenar la textura a
diferentes resoluciones (por lo general, utilizando múltiplos de dos) y en función de la
distancia elegir dos de estas resoluciones e interpolar entre ellas. El tipo de
interpolación (bilineal, tri-lineal, quad-lineal) define la calidad de la imagen obtenida.
Efectos de profundidad
Por lo general en la vida real, los efectos atmosféricos causan que los objetos
lejanos se vean de forma diferente. Se puede pensar por ejemplo en una situación con
niebla en la que los objetos se van viendo cada vez mas ocultos hasta perderse en un
fondo blanco.
Por lo general este tipo de efectos se puede conseguir utilizando la información
almacenada en el Z Bufer para añadir color en función de la distancia; con lo que se
consiguen efectos de gran realismo.
Transparencia
Ejemplos de hardware
Veremos a continuación dos ejemplos de hardware gráfico:
22
La "Geometry Engine" (que se correspondería con los coprocesadores gráficos a
los que antes nos referíamos) se encarga de realizar transformaciones de vértices,
iluminación, recorte, proyección, etc., así como de realizar operaciones sobre pixels
como histogramas, convoluciones, escalado, etc., operaciones que se aplican tanto a los
pixels normales, como a las texturas o a fuentes de vídeo.
El "Raster Manager" recibe todos los datos de triángulos, puntos y líneas ya
proyectados por la GE; estos datos deben ser recorridos línea por línea para generar la
información de pixels. Por su elevado grado de paralelismo, el RM puede realizar todo
tipo de operaciones de antialiasing (mediante sobre muestreo), mapeado de texturas, etc.
sin encontrar cuellos de botella.
El mapeado de texturas se realiza por medio de la ya comentada técnica de
MIPmapping; así mismo esta unidad realiza los cálculos necesarios sobre la
transparencia y los efectos de profundidad.
El "Display Generator" básicamente contiene los conversores Digital-Analógico,
por lo general generando mas de un canal de salida de vídeo; permitiendo el re-
muestreo de la señal de salida para adaptarlo a todo tipo de dispositivos de vídeo.
La Onyx2 IR standard permite manejar 2.62 millones de pixels, para obtener p.e.
una resolución de 1920 x 1200 o dos salidas a 1280 x 1024.
La cantidad mínima de bits por pixel en el bufer de pantalla es de 256 bits, con lo
que se puede llegar a utilizar salidas estereoscópicas en cuádruple bufer (dos por canal)
con 12 bits para color y 23 de Z Bufer.
Otros efectos que permite conseguir pueden ser:
• • Mapas de entorno
• • Texturas volumétricas
• • Antialiasing
• • Luces locales (hasta 8)
• • Sombras utilizando mapas de profundidad
• • Texturas proyectadas (diapositivas) - Vídeo como textura
23
técnicas de "bump-mapping", en las que por perturbaciones de la normal se obtiene una
apariencia de rugosidad en la superficie.
- Antialiasing por Hardware. Se observa caída en las prestaciones a resoluciones
superiores a 1024 x 768 debido a la influencia de la limitación de velocidad de acceso a
memoria.
- Transferencia de texturas y geometría por AGP - Compresión de texturas.
Con objeto de aprovechar mejor la memoria destinada a texturas a costa de
potencia de cálculo se utiliza un sistema de compresión de las texturas en memoria
capaz de reducirlas hasta aproximadamente 1/8 de tamaño. Con los sistemas actuales, el
ahorro de memoria y de ancho de banda justifica esta medida.
- Bufer de pantalla: Se usan 32 bits para el color y otros 32 para el Z Bufer con
una configuración standard, aunque es posible aumentar la cantidad de memoria del
bufer de los 32 Mb hasta los 128 Mb
- Optimizado para OpenGL y DirectX..
Software educativo
Se denomina así al software destinando a la enseñanza y el auto aprendizaje y además
permite el desarrollo de ciertas habilidades cognitivas. Así como existen profundas
diferencias entre las filosofías pedagógicas, así también existe una amplia gama de
enfoques para la creación de software educativo atendiendo a los diferentes tipos de
interacción que debería existir entre los actores del proceso de enseñanza-aprendizaje:
educador, aprendiz, conocimiento, computadora. Como software educativo tenemos
desde programas orientados al aprendizaje hasta sistemas operativos completos
destinados a la educación, como por ejemplo las distribuciones GNU/Linux
orientadas a la enseñanza.
24
El enfoque del software educativo abierto por el contrario enfatiza más el aprendizaje
creativo que la enseñanza. El software resultante no presenta una secuencia de
contendidos a ser aprendida, sino un ambiente de exploración y construcción virtual,
también conocido como micromundo. Con ellos los aprendices, luego de familiarizarse
con el software, pueden modificarlo y aumentarlo según su interés personal, o crear
proyectos nuevos teniendo como base las reglas del micromundo. Las críticas más
comunes contra este tipo de software son:
.No se deben confundir los conceptos de apertura del código con el que es escrito el
software (código abierto), con el concepto de apertura del enfoque educativo con el que
el software es creado. Existe software educativo cerrado (tutorial, instruccional,
estrictamente pautado) que tiene su código abierto.
25
Comunicación - Las aplicaciones más utilizadas en nuestras salas de clase no son los
programas tutoriales llamativos, y basados en multimedia, que se ven en las secciones
educativas de los almacenes del software. Cuando nuestros estudiantes están trabajando
utilizan los mismos programas que el resto del mundo utiliza, el procesamiento de
textos, el E-mail, las hojas de cálculo y software de presentación. Hay poco lugar para
la computadora como instructor en el ocupado salón de clase de hoy en día.
Análisis - Aquí está un área en donde las computadoras han cambiado la educación (o
deberían...). Con las hojas de cálculo y con las herramientas de graficación ahora en
cada PC, los estudiantes tienen la capacidad para realizar preguntas del tipo "y qué tal
si..." y hacer comparaciones de datos. Cualquier persona que ha utilizado una hoja de
cálculo para investigar algo tan simple como el costo de un viaje a Disneyland
entenderá cuán útiles son estas herramientas en el salón de clase. Existen ejemplos de
buena programación en cosas como el "wizard" para gráficos en Microsoft Excel. Los
botones de inspección previa y las ventanas wysiwyg hacen fácil para que los
estudiantes interactuar con el software y seleccionar opciones. Ellos pueden utilizar a un
"wizard" pero aun así están en el control de lo que sucede.
26
El punto de vista que plantea Papert sobre la utilización del ordenador en la enseñanza,
aparece muy alejado de los planteamientos en boga en aquella época. En general
predominaba como acabamos de señalar, un software inspirado en los principios de la
enseñanza programada. Frente a estos usos, y en contra de los mismos, Papert propugna
una práctica pedagógica mucho más innovadora. Según el autor, ya no se trata de
que las máquinas programen a los niños, sino de que éstos programen
a las máquinas.
La identificación de las fallas y las desventajas de los enfoques mencionados para el uso
educativo del computador, al tiempo que un mejor entendimiento de las caracterísitcas
de los procesos efectivos de aprendizaje, ha llevado a la idea de que los ambientes de
aprendizaje basados en uso del computador no deberían involucrar tanto el conocimiento y la
inteligencia en la dirección y estructura de los procesos de aprendizaje, sino más bien deberían
crear situaciones y ofrecer herramientas para estimular a los aprendices a hacer el máximo
uso de su propio potencial cognitivo (Scardamalia et al.; 1989; refiérase también a Brown,
1990). A este respecto Kintsch (1991) ha lanzado la idea de los tutores no inteligentes:
27
El aprendizaje necesita de la colaboración: la adquisición de conocimiento no es
puramente un proceso mental que se lleva a cabo en la mente, sino que ocurre en
interacción con el contexto social y cultural, así como con los artefactos, especialmente
a través de la participación en actividades y prácticas culturales. En otras palabras, el
aprendizaje efectivo no es una actividad sola, sino que es una actividad esencialmente
distribuida, por ejemplo, el esfuerzo del aprendizaje se distribuye entre un estudiante
individual, sus compañeros en el ambiente del aprendizaje, y entre los recursos y
herramientas que hay a disposición.
...La instrucción asistida por computadora (la tradicional CAI [Computer Assisted
Instruction]) representa el uso más generalizado, hasta el punto que se le identifica con
el uso de la computadora en el aula. Inseparable de la introducción de la computadora
en el aula, abarca sistemas que van desde los clásicos materiales programados de
estímulo-respuesta, de corte directivo, hasta sistemas basados en la resolución de
problemas de tipo no directivo.
Los inconvenientes y problemas que trae consigo y que ha hecho que se abandone, o al
menos se replantee, en muchos casos, el uso de la CAI y sobre todo los sistemas más
directivos, podemos describirlos así:
28
Representa la vía de utilización de la computadora más prometedora, pero también la
que más problemas plantean en su introducción real (diseño de programas, etcétera).
Sin embargo, la razón más importante de tener material abierto es el que los maestros
principalmente pero también los propios estudiantes puedan hacer ajustes menores en
unos casos y en otros cambios mayores a su propios material educativo, donde lo
importante es que no estén pasivos ante su propia educación. Así por ejemplo el caso
del maestro es muy importante, ya que sucedió con los medios audiovisuales y con
muchos de los materiales de la llamada Tecnología Instruccional (o Educativa) en que el
maestro colocaba la cinta de video y se sentaba con sus estudiantes a mirarla
pasivamente. Esto lo hace tres o cuatro veces, pero despúes el procedimiento aburre y el
primero en cansarse y es el mismo maestro, quien se siente mediatizado, utilizado y
relegado por no decir sustituido por esos dispositivos de la Tecnología Instruccional y
los abandona o deja de utilizar. Igualmente comienza a suceder incluso con el material
computadorizado, llamado "courseware", en las que el maestro sumistra los diskettes y
estos se encargan de dar la explicación, los ejercicios y hasta los exámenes del material
que se pretende exponer. Por el contrario, si el maestro (y sus estudiantes) son capaces
de ajustar el material, entonces se despierta el entusiasmo creativo, la investigación, la
competencia y el gusto.
En este caso, la computadora asume el papel del alumno que necesita ser enseñado para
realizar algo. Entonces el estudiante es quien enseña a la computadora. Para realizar lo
anterior el estudiante se comunica con la computadora mediante un lenguaje. Aquí la
enseñanza que recibe el usuario o estudiante es indirecta, ya que no puede enseñar lo
que no conoce y puede ser parcial es decir, el humano le enseña algo que no entiende en
su totalidad.
29
Así a manera de metáfora, dado que es el estudiante el guia en lo que quiere aprender,
es creativo y diseña como puede aprender empleando la computadora, es que se dice
que la computadora es enseñada o es el aprendiz. La idea de base es muy antigua, ya
que la mejor manera de aprender es enseñando, esto obliga al maestro a reflexionar e
interiorizarse de un tema no solo lo suficiente para manejarlo, sino para responder
cualquier duda o situación que se presente con él. En estricto sentido esto no está
ausente de paquetes que le sirven de herramientas, desde lenguajes hasta simulaciones y
proyectos computarizados. Tampoco está totalmente ausente de contenido de lo que
puede aprender con una de estas herramientas sui generis. El enfoque de "enseñar" a
una computadora no es extraño, de hecho este último sentido es el más natural para una
computadora, ésta no sabe hacer nada por sí misma hasta que se le dan los programas o
instrucciones para que haga algo.
Sin embargo el que tiene necesidad de aprender es el estudiante. En este caso se invierte
el rol y de alguna manera el estudiante que aprende trata de enseñar a la computadora no
sólo las cosas que tiene él que aprender sino frecuentemente tiene que enseñarle además
el cómo están hechas esas cosas, que relaciones tienen etc. Cosas por demás interesantes
y altamente formativas que además sirven de reforzamiento a la memorización pura.
Frecuentemente los maestros señalan que ellos verdaderamente han entendido un tema
cuando lo han tenido que explicar a otros, esto los ha obligado a interiorizarse del tema
a cuestionarlo y no sólo a repetirlo. Algunos ejemplos de esto serían los nuevos
paquetes que simulan una situación (por ejemplo el espacio interplanetario, o la bolsa de
valores) en la que el estudiante recorre o trabaja y de manera indirecta se dá cuenta de
los mecanismos que controlan la situación sin que estos se le digan explícitamente, el
estudiante "los descubre". Otros ejemplos podrían ser el diseñar un programa que
enseñe a la computadora a hacer cierto tipo de figuras, o imágenes, e incluso geometría
(es así que se presenta generalmente al Lenguaje LOGO como un instrumento de este
rol). De manera más sofisticada y difícil para el estudiante, es el pedirle que empleando
algún lenguaje de autor realice una lección para enseñarle algo a sus compañeros y
todavía más difícil el pedirle que realice un sistema experto que genere respuestas en
una combinatoria de búsqueda de soluciones.
30