Diferencia entre revisiones de «Algoritmos Gráficos»

De Casiopea
Línea 914: Línea 914:
* [http://www.shiffman.net/teaching/nature/ Daniel Shiffman, Nature of Code]
* [http://www.shiffman.net/teaching/nature/ Daniel Shiffman, Nature of Code]
* [http://www.shiffman.net Daniel Shiffman]
* [http://www.shiffman.net Daniel Shiffman]
===Tex===
* [http://wiki.lyx.org/Mac Lyx Grupo]
* [http://en.wikibooks.org/wiki/LaTeX Wiki Latex]





Revisión del 13:03 31 mar 2010

TALLER DE TITULACIÓN

Temario

  • Comienzo y término del trimestre: Lunes 21 de septiembre - Lunes 7 de diciembre.
  • Duración del trimestre: 8 semanas

Exploración

Resumen

Introducción

EL trabajo de investigación de éste trimestre considera la etapa de exploración y generación de antecendentes para la "máquina de dibujo" divididas en un orden de trabajo de dos ítems que tienen como objetivo la exploración y profundización. Siendo el primero Trazos de la ciudad, donde se inspeccionarán las tipologías existentes y su variación respecto de la geometría, contraste, colores y proporciones que se especifiquen para luego examinar el ítem sobre los Componentes asbtractos de una línea, donde se profundiza sobre las partes del trazo, línea y punto, junto a las variables que hacen las diferencia entre los mismos elementos gráficos, para luego indagar sobre el nexo que se puede generar entre éstos elementos y el marco de la cinética.

Definiciones

Línea

Etimología

Del latín línea, que originalmente significaba fibra de lino y más tarde pasó a significar también línea y frontera. A su vez de linum, lino. [1]

Definición

Extensión recta considerada sólo en su longitud, es una sucesión continua de puntos unidos entre sí, interminables e infinitos. Una línea se extiende en ambas direcciones sin tener un final (infinitamente). Una línea finita es un segmento de línea.

Tipos de Línea

Recta (una dimensión)

Por tener una sola dimensión se denominará: Línea recta, el lugar geométrico de la sucesión continua de puntos en la citada dimensión,además tiende a ser infinita en ambos sentidos y direcciones.

Planas (dos dimensiones)

Una sucesión continua de puntos contenidos en un plano, aunque siga cualquier criterio, se denomina línea. Puede ser: Línea recta, la sucesión continua de puntos en una misma dirección. Línea curva, de formas redondeadas, con uno o varios centros de curvatura. Línea quebrada o poligonal, formada por segmento rectos consecutivos no alineados, presentando puntos angulosos. poligonal abierta, si no están unidos el primero y último segmentos. poligonal cerrada, si cada segmento esta unido a otros dos Línea mixta, una combinación de las anteriores.

Espaciales (tres dimensiones)

También, una línea es el lugar geométrico de una sucesión continua de puntos en un espacio tridimensional, aunque siga cualquier criterio. Puede ser: Línea recta, curva o quebrada, similares a las anteriores. Línea curva alabeada, la que presenta formas redondeadas y no puede ser contenida en un plano. Línea quebrada tridimensional, la que presenta puntos angulosos y no puede ser contenida en un plano. Línea mixta tridimensional, una combinación de las anteriores.


Trazo

Definición

(1)Se puede entender por trazo cada una de las rectas y curvas que componen un carácter (en cuyo caso la letra L se compone de dos trazos) o bien el conjunto de rectas y curvas que se escriben sin levantar el lápiz (u otro instrumento de escritura) del papel (según esta definición la L se escribe con un trazo). Esta última definición es la que se utiliza para contar el número de trazos de un carácter chino. En chino y japonés, la clasificación de los caracteres se suele hacer según el número de trazos que tienen; además, el orden de los trazos en el que se escribe cada carácter es muy importante. (2)Se refiere a la marca que deja un instrumento lítico al trabajar en su función específica sobre otros materiales (el punzón, que rompe con la punta, deja trazos longitudinales; el perforador, que perfora por rotación, deja trazos circulares). (3) Describir o explicar algo dibujando lo característico por medio de rayas ó líneas.

Trazo en el Dibujo

Estructura del Trazo

Variaciones del Trazo

Punta de la herramienta

El trazo variará en su forma dependiendo de la forma de la punta de la herramienta ó de como ésta arroja la tinta a la superficie cuando el caso no se trata de lápices. De éste modo podemos clasificar las herramientas del trazo, en dos grupos, entre las que apuntan a la superficie y las que a través de una forma arrojan la tinta a ella.

Las que apuntan: lápiz, tiza, plumón, carboncillo, plumilla Las que arrojan: spray, aerografos, rodillos, manos

Sabiendo los tipos de material con que se puede aplicar color a una superficie, polvillo, tinta, líquido, etc para hacer el estudio antes de entrar a ver las variaciones de cada una de ellas, de manera previa nos referiremos a tintas, cuando se trate del material que se aplica al imprimir color en una superficie.

Las herramientas que gracias a su forma, apuntan la tinta a un punto de la superficie, varian en el ancho del trazo según la forma de la punta, formando dos subgrupos, las puntas redondas y las puntas cuadradas. Los trazos hechos con punta redonda siempre tendrán el mismo ancho independiente del lado de la punta que se use, el único caso en que el grosor del trazo se puede ensanchar es cuando la punta está desgastada en el caso de los plumones y las fibras de la punta se separan consiguiendo una mayor anchura en el trazo y creando bordes en el trazo más difusos. Por otro lado las puntas cuadradas, tienen mayor variabilidad en los tipos de trazo que se pueden hacer con la misma herramienta, pudiendo variar desde finas líneas si se usa un vértice de la punta, ó anchos trazos si se usa la parte planicie de la misma. Las herramientas que de un u otro modo disponen la tinta en la superficie a través de su forma, siendo ella una gran especie de punta, varían la forma de su trazo en el modo en que esa forma es puesta en la superficie a modo de un timbre que luego arrastra la tinta en la superficia qeudando impreso el ancho de la herramienta en el trazo, y la textura de la misma en los bordes del trazo.


Punta de los extremos del trazo

Existen dos lados del trazo iguales siempre que éste se ejersa con la misma presión y velocidad de principio a fin; de lo contrario, si estos factores varían el extremo del comienzo del trazo será distinto al final, correspondiendo el final a la variación de dichos factores. Las puntas del trazo, son las impresiones en los extremos del trazo en la superficie de la mitad de la silueta que dejaría un timbre hecho con la misma herramienta. La variación de éstas corresponde a dos factores, una es la forma generalizada de cada herramienta para trazar lo que en el grupo de las que apuntan, varía en puntas redondas y puntas cuadradas, teniendo el mismo resultado en los extremos del trazo, y por otro lado para las herramientas que "arrojan" la tinta a través de su forma la puntas del trazo, sería una impresión a modo de silueta de la misma herramienta. El segundo factor de variabilidad corresponde a la presión y rapidez con que se haga el trazo, donde a mayor rapidez y menor presión el final del trazo termina "cerrado" o abierto, llamaremos cerrado cuando el dibujo de el mismo cierre en una recta o curva perfecta, y abierto cuando el trazo termine con mayores irregularidades. A esto agregaremos otro tipo de extremo final del trazo, que sería el final fuerte, que ocurre cuando a éste final se le aplica mayor presión que en la de todo el trazo, teniendo como resultado un color más oscuro y un ancho mayor también.

Bordes del Trazo

Los bordes del trazo se verán totalmente relacionados a la forma de la herramienta con que se aplica el material, y a la presión que se le ejersa. Cuando haya menos presión, más difuminados serán los bordes del trazo, y cuando la presión sea mayor los bordes del trazo tendrán una silueta lisa y cerrada. A pesar de la variabilidad de la forma de cada herramienta para trazar, los bordes que topan la superficie siempre tenderán a ser lisos dado que la herramienta, arrastra y apreta el material en la superficie, en el caso de los liquidos esparciendolos, y en el caso de los polvillos presionando para que cada grano entre a los poros del papel. En el caso de los materiales que cuando se aplican a una superficie, la herramienta no toca la misma superficie y el mtaerial es "arrojado" a ella, en el caso de aerosoles y sprays, lo liso del borde del trazo depende de una precisión entre presión y velocidad. Si la presión y la velocidad son iguales y altas los bordes quedarán lisos, si la velocidad es más baja que la presión la pintura se chorreará y los bordes no serán lisos, si ambas son bajas los bordes marcarán una línea difusa entre pintura y superficie, dado a que el modo de arrojar pintura en este caso, viene de un orificio que a modo de presión saca pintura, cosa que si vieramos de manera micro es similar a una manguera donde hacemos presion con el agua y esta sale disparada para todas partes, acá es lo mismo solo que como es a una mínima escala, podemos no fijarnos en los bordes y tener una idea de que los bordes de los trazos son ordenados y se forma una línea.

Textura del Trazo y La Unidad en la herramienta

La textura que tenga el trazo tiene que ver con la presión que a éste se le aplica ya que en cualquier herramienta aplicando cualquier material, a menor presión, menor material impreso, y a menor material impreso, se cubre menor cantidad de superficie con el material, por lo que queda a la vista parte de ésta superficie también, a través de "agujeros" que adoptarán la forma de las unidades que componen la herramienta. Es decir, en una aplicación de pìntura con brocha a poca presión los "agujeros" tendrán formas lineales heredadas de los pelos de la brocha, en el caso del spray los agujeros serán formas entre circulos dado que el spray arroja pequeñas gotas de pintura, que toman forma en el especio según la relación de aire que haya en el ambiente y la presión con que el material fué sacado de la lata. En el caso del carbón el polvillo es tán fino, que cuando se dibuje con él, éste irá más que nada marcando la textura de la misma superficie, que solo no se marcará si el material está aplicado con mucha presión.


Color del Trazo

Dentro de la definición del color del material que la herramienta esté aplicando, éste tendrá una variación en su tonalidad que dependerá de la presión con que se aplique a mayor presión la tonalidad será mas oscura, a menor presión la tonalidad será más clara.


Variaciones de la Aplicación

Los factores velocidad y presión están siempre relacionados a la hora del ver el resultado en el trazo, pero para poder analizarlos, hablaremos de cada uno por separado considerando que el otro se ejerce en la superficie en un rango normal.

Velocidad

La velocidad con que el trazo sea aplicado, hará que el trazo varíe en su precisión, en la forma de la punta del trazo, y en la textura. A mayor velocidad el trazo tendrá una menor geometría en su precisión para los trazos rectos, es decir si se hace un trazo recto muy rápido este tenderá a ser mínimamente curvo, ésto es debido al movimiento de manos que se hace al trazar, por naturaleza no es recto sino que recorre la parte de un ángulo. Para cuando queremos hacer trazos curvos éstos serán más perfectos cuando se hacen a menor velocidad por la precisión que requieren. A mayor velocidad la punta del trazo se verá afectada también ya que éste casi no se termina, y queda la punta abierta. A mayor velocidad tambien queda mayormente impresa la textura del mismo material, ya que con mayor rapidez, queda menos material en la superficie y mas que tapar, remarca con color con una delgada lámina de material la forma de la textura. Hay un menor distingo entre superficie y material por ende se resalta un mayor distingo.

Presión

La presión hará variar al trazo en su tonalidad, textura y tamaño de la punta del trazo mismo.En el caso de la presión ésta al ser mayor hará que el material se acumule más a medida que se va trazando por ende el tono será más oscuro, y viceversa si es menor el tono será mas claro mezclandose tambien con el tono de la superficie. A demasiada presión la textura que tenga tanto el material en sí como la superficie se anulan, ya que es tanta la cantidad de material que queda impresa que tapa la textura de la superficie y por otro lado tapa con capas la del mismo material en sí. La punta del trazo se ve muy afectada por la presión aplicada también, ya que si la presión aplicada en la punta es mayor a la del recorrido del trazo, la punta adoptará una forma de mayor tamaño que el ancho del mismo trazo, en el caso de los materiales líquidos, por su acumulación y absorción de la superficie, en el caso de los no líquidos éstos tendrán solo una mayor tonalidad pero no se agrandará su tamaño si se aumenta la presión ya que no hay material que absorba otros materiales sólidos.

Processing

Definición

Processing es un cuaderno electrónico que trabaja bajo un lenguaje de programación abierto para el desarrollo de ideas con imágenes, interacción y animación.

Sintáxis

Estructura

El lenguaje de processing se divide en dos partes, la primera es Void Setup, una función que se ejecutará sólo una vez, es donde especificamos todas las coordenadas del espacio, color de fondo, tamaño en pixeles, velocidad de frames y algunos valores que designemos como fijos en ésta "mesa de trabajo". Luego Void Draw, es una función que se ejecutará indefinidamente, donde determinaremos las acciones que se desarrollarán en el espacio y bajo que condiciones éstas ocurrirán. Para ver la sintáxis de ambas partes, mostraremos un ejemplo:

void setup(){

  • size (240,240); tamaño del espacio en pixeles
  • background(12,128,128); color de fondo
  • noStroke(); borde
  • rect(10, 10, 10, 10); aparecerá un rectángulo fijo

void draw(){

  • background(0);
  • vel= (mouseY/10); la velocidad depende de la posición vertical del mouse dividida en 10
  • pos = pos+vel*dir; actualizar posición, según la velocidad por la dirección del mouse
  • sz=mouseX/5; la medida del elipse depende de la posición horizontal del mouse divida en 5
  • ellipse(pos,height/2,sz,sz); dibujar un elipse con centro x,y en x igual a la posición(que dependerá de la velocidad y dirección del mouse), y con y igual a la altura dividida en dos (que dependerá de la posición horizontal del mouse) y con un ancho y alto iguales a sz definidos anteriormente
  • if(pos>width)
    • dir = -dir; comprobar si está en el límite de la ventana
  • else if(pos<0)
    • dir=-dir;

Configuración y Elementos

Configuración

Background

Define el color del fondo de la ventana, con varios modos distintos:

  • background(134), define un tono de gris
  • background(127, 192, 255), color RGB
  • background(FFCC00), color hexagesimal
Size

Define el tamaño de la ventana indicando alto y ancho en pixeles

  • size(200,234), 200 pixeles de ancho y 234 pixeles de alto
Fill

Define el color del interior de una figura geométrica del mismo modo en que se indica el color de fondo.

  • fill(134), define un tono de gris
  • fill(127, 192, 255), color RGB
  • fill(FFCC00), color hexagesimal
Stroke

Define el color de una línea del mismo modo en que se indica el background y fill

  • stroke(134), define un tono de gris
  • stroke(127, 192, 255), color RGB
  • stroke(FFCC00), color hexagesimal

Formas 2D

Punto

Es una posición definida por x,y dentro del espacio determinado por size. point(30,20), un punto con x en 30 e y en 20

Línea

Dibuja una recta entre dos puntos. line(30, 20, 85, 40), con x1=30, y1=20, x2=85, y2=40, donde va una línea desde el punto 30, 85 a 20,40

Arco
Cuadrado
Rectángulo
Círculo
curveVertex

Similares a las atenitas de los programas de dibujo vectorial, curveVertex define los vértices que tendrá una curva. Además siempre usará números float ó int, es decir, decimales o enteros. Dentro de la lista de curveVertex siempre el primer y último término será el comienzo y final de la línea y la lista en sí deberá tener cuatro términos como mínimo. Como regla una lista de términos curveVertex deberá siempre ir entre beginShape() y endShape().


noFill();
beginShape(); indica que comienza una figura
curveVertex(84,  91); primer punto de la curva
curveVertex(84,  91);
curveVertex(68,  19);
curveVertex(21,  17);
curveVertex(32, 100);
curveVertex(32, 100); último punto de la curva
endShape(); indica que termina una figura

Datos

Tipos de Datos

Int

Son sólo números enteros

ej

i = 40;
printIn(i);

Float

Son sólo números con decimales

ej

f = 980.4059697;
println(f);

Boolean

Indica cuando se cumple una condición, verdadero o falso

ej

condición b = true
printIn(b);

Charc

Son solamente carácteres

ej

c = `d´;
printIn(c);

Byte

Van del -128 to 127

ej

b = -25;
printIn(b);

Color

Indica el color en valores hexagesimales #FFCC00 ó en RGB, (220,0,55)

ej

c = (13,255,0);
printIn(c);

Variables

Programar se reduce a gestionar una serie de valores a través de condicionales. Esta gestión nos permite comparar valores a través de condicionales. Cuando queramos comparar una variable con un número exacto, lo haremos del siguiente modo:

  • if( a > 9 ) {, si a es mayor a 9
  • println(”nueve”); imprimir nueve
  • }
Mas que
  • Más grande que
  • if(año>2009){
  • println(”esto es el futuro”);
  • }
Más grande o igual
  • if(año>=2009){
  • println(”esto es el futuro o el presente”);
  • }
Más pequeño
  • if(año<2009){
  • println("esto es el pasado");
  • }
Más grande que
  • if(año<=2009){
  • println("esto es el pasado o el presente");

}

No igual
  • if(año!=2008){
  • println(”esto no es el presente”);
  • }
Posición según el mouse
  • mouseX: posición del mouse en el eje X
  • mouseY: posición del mouse en el eje Y
  • pmouseX: posición del mouse en el eje X en el frame anterior
  • pmouseY: posición del mouse en el eje Y en el frame anterior
  • mousePressed: clickear dentro de la imagen para cambiar un valor.
  • mouseButton: clickear dentro de la imagen; el click derecho o izquierdo servirían para ir variando algún valor.
  • mouseClicked: clickear dentro de la imagen para cambiar el valor de una figura después del click.
  • mouseDragged: arrastrar (clickeando) el mouse sobre la imagen para ir cambiando los valores de la figura.
  • mouseMoved: mover (sin clickear) el mouse sobre la imagen para ir cambiando un valor.
  • mouseReleased: ???

Funciones

  • mousePressedd(): se ejecuta cuando se presiona el botón izquierdo del mouse
  • mouseReleased(): se ejecuta cuando se presiona el botón derecho del mouse

Dibujo

Función Draw

Para dibujar hay dos modos de hacerlo, uno es dejar que la ejecución de una acción quede impresa en la ventana y sobre ella volver a dibujar sin borrar ó tapar (mejor dicho)lo anterior. Otro modo de dibujar es poniendo una capa de color claro entre la ejecución de una y otra función de modo que la suma de funciones ejecutadas van tomando forma de video.

Primer modo

float yPos = 0.0; 
void setup() { 
   size(200, 200); 
   frameRate(30);
} 
 
void draw() { 
   background(204);
   yPos = yPos - 1.0;
   if(yPos < 0) {
     yPos = height;
     }
   line(0, yPos, width, yPos);
}


Segundo modo

void setup() {
size(200, 200);
}

void draw() { }
void mousePressed() {
line(mouseX, 10, mouseX, 90);
}

Ejercicios

Uno

float xPos, xVel;
float yPos, yVel;
float sz = 30;

void setup(){

size(500,500);
xPos = width/3;
yPos = height/2;
xVel = 40;
yVel = 75;
framerate(50);
noStroke();
smooth();
}

void draw(){

background(0);
fill(130,120,0,3);
rect(0,0,width,height);
float distanceX = mouseX-xPos;
float distanceY = mouseY-yPos;

xPos = xPos + distanceX/xVel;
yPos = yPos + distanceY/yVel;
sz = distanciaTotal/2; 
fill(0,30);
ellipse(xPos,yPos,sz,sz);



Dos

float prevMouseX, prevMouseY;
float delta;
float dx,dy;
float posX, posY, velX,velY; 

void setup(){
  size(550,550);

} 

void draw(){
  fill(0, 2);
  noStroke();
  rect(0,0,width,height);
  strokeWeight(3);
  stroke(255);
  line(mouseX ,mouseY, pmouseX, pmouseY); 

  prevMouseX = mouseX;
  prevMouseY = mouseY; 
} 

Tres: el factor distancia en el dibujo
Posición del mouse y color

En el siguiente ejemplo se generará un valor t, donde la primera variable de la distancia será x1=0, posición del mouse en x; luego y1=255, posición del mouse en y. Dicho valor será el relleno o fill en el rectángulo, quien luego de llamarlo, lo alterará multilicándolo por 2. Entonces cuando movamos el mouse siempre que tengamos x1 en 0 y y1 en 255, el color del rectángulo variará para los segundos valores x2 y y2 según la posición del mouse.


void setup() {
 size(500,500);
} 
void draw() {
  float t = dist(0, 255, mouseX, mouseY);
  fill(t*2);
  rect(0, 0, 200, 200);
}

Cuatro (duda): el grosor del trazo y la posición del mouse

http://joan.cat/han06/sketches/22_follow_dos/_022_follow3.pde


/*
joan soler-adillon
 www.joan.cat
 setembre 2006
 */

/*
Tota disciplina amb cara i ulls ha de saber retre homenatge als grans mestres del saber occidental.
 Aquest exemple és un doble homenatge als grecs: Zenó i Pitàgores.
 */

float xPos, xVel;
float yPos, yVel;
float sz = 20;

void setup(){
  size(400,400);
  xPos = width/2;
  yPos = height/2;
  xVel = 75;
  yVel = 75;
  framerate(60);
  noStroke();
  smooth();
}

void draw(){

  //background(0);
  //proveu això enlloc de background(0);:
  fill(255,255,0,3);
  rect(0,0,width,height);

  //calculem la distància entre el ratolí i la bola incordiadora en els 2 eixos per separat
  float distanceX = mouseX-xPos;
  float distanceY = mouseY-yPos;


  /* La paradoxa de zenó diu que Aquiles mai atraparà la tortuga...
   La nostra bola semitransparent tampoc atraparà mai del tot el ratolí
   */
  xPos = xPos + distanceX/xVel;
  yPos = yPos + distanceY/yVel;

  //I, com no, encara que no ho sembli, aquí teniu el teorema dels teoremes.
  //Així és com es calculen les distàncies en un entorn 2D com el que estem:
  //i en el nostre cas farem servir la distància per establir la mida de la bola
  float distanciaTotal = sqrt(distanceX*distanceX+distanceY*distanceY);
  // de fet, després de fer això m'he adonat que processing té la funció dis() que fa exactament el mateix!
    
  sz = distanciaTotal/2; //perquè dividit per dos? perquè sí, per estètica

  //i dibuixem la cosa
  fill(0,16);
  ellipse(xPos,yPos,sz,sz);
}

Composición de Datos

Array (arreglo ó matriz)

Un arreglo es una lista de datos de cualquier tipo. Dentro de la lista, cada dato tiene un número que indica su ubicación dentro de la misma lista. La longitud del arreglo ó lenght. Esta enumeración de datos siempre comienza con cero del modo [0], luego [1], [2], etc. La lista de datos enumerados siempre será finita y corresponderá a un número entero. Se puede identificar un arreglo por el no uso de paréntesis.


int[] numbers = new int[3];
numbers[0] = 90;
numbers[1] = 150;
numbers[2] = 30;
int a = numbers[0] + numbers[1]; // Sets variable a to 240
int b = numbers[1] + numbers[2]; // Sets variable b to 180

Array List (lista de arreglos ó matrices)

Cuando tenemos una lista de arreglos, tenemos dos conteos, uno es el lenght ó cantidad de enumeraciones de datos en el arreglo, y la otra es el size, cantidad de completamente todos los datos de la lista de arreglos. De éste modo podemos llamar a un dato específico nombrando su enumeración ó lenght. También podemos agregar un dato a la lista con add(), sacar uno con remove() ó llamar a uno con get() y así designarle una función específica.

<nowiki>
void setup() {
  size(200, 200); //tamaño del fondo
  balls = new ArrayList();  // se crea una lista vacía
  balls.add(new Ball(width/2, 0, 48));  // balls.add agrega un elemento a la lista
}

void draw() {
  background(255); // color de fondo
  // En un arreglo decimos balls.lenght (longitud del arreglo) pero en una 
     lista de arreglos decimos balls, size() (tamaño del arreglo)
  // Ahora se recorre la lista de arreglos hacia atrás porque estamos eliminando 
     elementos de la lista al decir  
  for (int i = balls.size()-1; i >= 0; i--) { 
  // Luego le debemos decir a la lista de arreglos que dato queremos llamar
  Ball ball = (Ball) balls.get(i); //tomamos el valor i definido antes
  ball.move(); luego lo movemos
  ball.display(); luego aparece
  if (ball.finished()) { si????????????????????????????????????
  // el dato puede ser eliminado
  balls.remove(i); 
    }
  }  
}

void mousePressed() {
  // si el mouse está presionado se agrega un dato a la lista de arreglos
  balls.add(new Ball(mouseX, mouseY, ballWidth));
}
Funciones con Array
append()

Expande una arreglo, agregando un elemento y nuevos datos sobre la nueva posición. El nuevo elemento debe ser del mismo tipo de datos que aloja el arreglo.

String[] sa1 = { "OH ", "NY ", "CA "}; //datos existentes en el arreglo. 
String[] sa2 = append(sa1, "MA "); //nuevo dato agregado al arreglo.
println(sa2);  // Prints OH, NY, CA, MA //arreglo modificado. 
arrayCopy

Copia un arreglo ó matriz ó parte de ella a otro arreglo.


String

String (cadena) es una secuencia de carácteres. La diferencia de string, aparte de trabajar con carácteres, es que éstos se pueden comparar.

Según el ejemplo, ¿Porqué ambos imprimen los carácteres de strl 1?

String str1 = "CCCP";
char data[] = {'C', 'C', 'C', 'P'};
String str2 = new String(data);
println(str1);  // Prints "CCCP" to the console
println(str2);  // Prints "CCCP" to the console
Comparación de Strings
MODO INCORRECTO DE COMPARACION
String p = "potato";
if (p == "potato") {
  println("p == potato, yep.");  // no se imprimirá
} 
MODO CORRECTO
if (p.equals("potato")) {
  println("p.equals(potato")); //siempre que sean iguales se imprimirá
}
Funciones con String

Referencias


Anotaciones sobre los Algoritmos

Programa

El trabajo a realizar éste trimestre resuelve y concreta el desarrollo de dos áreas para la presentación del proyecto.

Ritmo de la edición

El orden de como van apareciendo éstos algoritmos y la linealidad con que se irán desplegando en la edición, define el aspecto gráfico de la misma visualización y su continuidad. La misma edición tiene tres líneas que van decantando y haciendo entender el ritmo de la edición:

  • cinco algoritmos (Minkowski, Particiones, Weyl, Newton, Boole)
  • anotaciones sobre la representación del lenguaje
  • anotaciones sobre los mismos algoritmos

Primer orden

  • Minkowski: partitura del espacio
  • Particiones: división del espacio
  • Weyl: movimiento en el espacio
  • Newton: clasificación y leyes del espacio
  • Boole: crecimiento del espacio
  • Lenguaje: capítulo sobre anotaciones personales sobre la representación del código Proccesing y Tex.

Anotaciones

Espacio

etimología: del latín Spatium


Relaciones espacio - tiempo

  1. Aristóteles: el estado natural de un cuerpo es estar en reposo, y solo se mueve si es empujado.
  2. Galileo: un cuerpo que se mueve no parará a menos que se le aplique una fuerza ó se le detenga.
  3. Newton: En base a Galileo genera 3 leyes:
  • Ley de Inercia: Sin fuerzas externas un objeto que está en reposo ó en movimiento se mantendrá tal cual, con movimiento recto y velocidad constante. Inercia es la propiedad de un cuerpo que se resiste al cambio.
    • medida de inercia de un cuerpo: su momento
    • momento: proporcional a la velocidad
    • constante de proporcionalidad: su masa
  • Ley de fuerza: relaciona el cambio de velocidad con la fuerza aplicada al objeto.
    • fuerza aplicada a un objeto: masa del objeto x aceleración causada por la fuerza aplicada. Considerando la aceleración y fuerza con la misma dirección.



Ya que el mismo tiempo se ha relacionado desde la antigüedad con el movimiento, éste a la vez se ha ligado a conceptos como el espacio y la eternidad también. La concepción de Artistóteles era definir el tiempo como una "medida del movimiento", con sede en el alma ya que sólo desde la subjetividad del hombre adquiere significado la noción de pasado, presente y futuro. Así Artistóteles negaba la existencia del tiempo como entidad absoluta. Pero sí consideraba el espacio como el lugar ocupado por alguna cosa. En cambio Newton afirmaba que éste podía fluir por sí mismo sin relación alguna con el exterior, entendiendo así el tiempo como una "duración". En cambio para Kant y Hegel el tiempo era una representación intelectual. La idea de "espacio-tiempo" entendida como dos sistemas inseparables constituyen la teoría de la relatividad, contribuyendo a eliminar la idea del tiempo absoluto.

Aristóteles: espacio es el lugar que ocupa un objeto, sin cuerpos no existe el espacio. Newton: espacio como sustancia infinita, inmóvil e inmaterial, donde "flotan" los objetos materiales. Euclides: espacio es la distancia entre dos puntos. Kant: las percepciones dan cabida a las experiencias y éstas al lugar. Hegel: el espacio es una intersección entre superficie, dimensión indeterminada y dimensión determinada que unida al movimiento junto con el espacio y el tiempo, generan una extensión abstracta (espacio-tiempo). Hillbert/ Banach: dimensiones infinitas.

El espacio euclídeo o euclidiano es el espacio matemático n-dimensional usual, una generalización de los espacios de 2 (plano euclídeo) y 3 dimensiones estudiados por Euclides. Estructuralmente un espacio euclídeo es un espacio vectorial normado sobre los números reales de dimensión finita, en que la norma es la asociada al producto escalar ordinario. Para cada número entero no negativo n, el espacio euclídeo n-dimensional es el conjunto:

junto con la función distancia obtenida mediante la siguiente definición de distancia entre dos puntos (x1, ..., xn) e (y1, ...,yn):


Archivo:Función distancia.png


Esta función distancia está basada en el teorema de Pitágoras y es llamada Distancia euclidiana.

Un espacio vectorial (o espacio lineal) es el objeto básico de estudio en la rama de la matemática llamada álgebra lineal. A los elementos de los espacios vectoriales se les llama vectores. Sobre los vectores pueden realizarse dos operaciones: escalarse (multiplicarlos por un escalar) y sumarse. Estas dos operaciones se tienen que ceñir a un conjunto de axiomas que generalizan las propiedades comunes de las tuplas de números reales así como de los vectores en el espacio euclídeo. Un concepto importante es el de dimensión.


Henri Bergson

Inconmensurabilidad y singularidad de la vida. Momento histórico en el que la psicología se constituye como ciencia positiva. Se establecen dos mundos: El espacio: lo estable y necesario, la materia, exterior, útil y nivel de las ciencias naturales. El tiempo: lo dinámico y espontáneo, la vida, experiencia interna, la filosofía. Aquí está el constitutivo de la realidad, que sólo se conoce desde dentro, en el contacto inmediato e intuitivo. Limitar las pretensiones del intelecto y hacer posible la filosofía. Su objetivo fue la defensa de la creatividad y la irreductibilidad de la conciencia o espíritu (en francés la palabra sprit es decir "espíritu" suele usarse para designar a algo más material: la conciencia) contra todo intento reduccionista de cuño positivista. Fuentes de su pensamiento: recuperar determinadas dimensiones de la conciencia, perdidas por el idealismo: sentimiento inmediato de las cosas y de uno mismo. Formación positivista: Darwin (1859. El origen de las especies) y Spencer, de él toma el evolucionismo y su noción de inteligencia, pero lo depura de sus rasgos naturalistas y positivistas, la evolución -y con ella la vida, y sobre todo la vida humana- es para Bergson una inversión de materia en el tiempo hacia lo superior. Bergson también tiene influencias de Kant y los neokantianos e influencias de la tradición personalista francesa, Maine de Biran: radicalidad de la persona y el espíritu, libertad, análisis de la vida interior, la conciencia y la experiencia interior vistas como conocimientos superiores.

Características de su pensamiento [editar]

Uso de imágenes y metáforas. Precisión en el lenguaje. Uso abundante de dicotomías que es paralelo a la denuncia de las falsas dualidades. Concepción muy personal de la filosofía: evitar las abstracciones y las generalizaciones, que no alcanzan la realidad. Su punto de partida es la filosofía de Spencer (1820-1903). Muy interesado en la mecánica, trabajó como ingeniero en los ferrocarriles. Luego estudió geología y biología. Antes que Darwin, planteó una interpretación de la realidad basada en el principio de la evolución. Rebatió a Comte y su clasificación de las ciencias. Toda la realidad está sometida a la evolución, que es la manifestación de lo incognoscible o "fuerza" (élan vital). Su supuesto es la conservación de la materia y de la energía. Es un proceso mecánico, no finalista, que para él es la más concreta, pero percibe que es obligación de la filosofía ir al fondo de las ideas básicas de la mecánica: el tiempo. La mecánica trata el tiempo de un modo matemático, espacialmente, como un receptáculo vacío y homogéneo que forma una línea; éste no es el tiempo real, el tiempo real es (en la opinión de Bergson) una pura duración2 que se capta en la experiencia interna. La mecánica no comprende el tiempo, pues lo concibe según el modo de ser del espacio; además hace imposible el movimiento, pues lo divide en unidades cuya entidad es completa en sí misma.3 La filosofía tiene que hacerse cargo de ese tiempo real y para ello recurre a la intuición, como conciencia inmediata o percepción directa de la realidad, que no usa simbolizaciones, aunque no puede prescindir del lenguaje. El positivismo y las ciencias no mantienen su compromiso de fidelidad con los hechos, pues el tiempo de la experiencia concreta escapa a la mecánica, que trata el tiempo como una serie de instantes, uno junto a otro; un tiempo espacializado y reversible (se puede dar marcha atrás y repetir el experimento); los instantes son externos e iguales: Tiempo isocrónico de Newton. Pero el tiempo de la conciencia no es así, su rasgo básico es la duración: el yo vive el presente con el recuerdo del pasado y la anticipación del futuro, 'que sólo existen en la conciencia que los unifica. Los instantes valen de diferente modo, un momento penetra en otro y queda ligado a él. Es inútil ir a la búsqueda del tiempo perdido: no hay reversibilidad del tiempo. El tiempo es nuevo a cada instante y requiere un método específico.

Particiones http://demonstrations.wolfram.com/TheNumberOfPartitionsIntoOddPartsEqualsTheNumberOfPartitions/ El número de particiones en un grupo de números impares es igual al número de particiones en un grupo de distintas partes

Isaac Newton

Las leyes de la Dinámica [editar]

Artículo principal: Leyes de Newton Otro de los temas tratados en los Principia fueron las tres leyes de la Dinámica o Leyes de Newton, en las que explicaba el movimiento de los cuerpos así como sus efectos y causas. Éstas son: La primera ley de Newton o ley de la inercia "Todo cuerpo permanecerá en su estado de reposo o movimiento uniforme y rectilíneo a no ser que sea obligado por fuerzas impresas a cambiar su estado" En esta ley, Newton afirma que un cuerpo sobre el que no actúan fuerzas extrañas (o las que actúan se anulan entre sí) permanecerá en reposo o moviéndose a velocidad constante. Esta idea, que ya había sido enunciada por Descartes y Galileo, suponía romper con la física aristotélica, según la cual un cuerpo sólo se mantenía en movimiento mientras actuara una fuerza sobre él. La segunda ley de Newton o ley de la interacción y la fuerza "El cambio de movimiento es proporcional a la fuerza motriz impresa y ocurre según la línea recta a lo largo de la cual aquella fuerza se imprime" Esta ley explica las condiciones necesarias para modificar el estado de movimiento o reposo de un cuerpo. Según Newton estas modificaciones sólo tienen lugar si se produce una interacción entre dos cuerpos, entrando o no en contacto (por ejemplo, la gravedad actúa sin que haya contacto físico). Según la segunda ley, las interacciones producen variaciones en el momento lineal, a razón de Siendo la fuerza, el diferencial del momento lineal, dt el diferencial del tiempo. La segunda ley puede resumirse en la fórmula , siendo la fuerza (medida en newtons) que hay que aplicar sobre un cuerpo de masa m para provocar una aceleración . La tercera ley de Newton o ley de acción-reacción "Con toda acción ocurre siempre una reacción igual y contraria; las acciones mutuas de dos cuerpos siempre son iguales y dirigidas en sentidos opuestos" Esta ley se refleja constantemente en la naturaleza: la sensación de dolor que se siente al golpear una mesa, puesto que la mesa ejerce una fuerza sobre ti con la misma intensidad; el impulso que consigue un nadador al ejercer una fuerza sobre el borde de la piscina, siendo la fuerza que le impulsa la reacción a la fuerza que él ha ejercido previamente...

+trabajo de un discurso por medio de escalones, se trabaja el discurso, el orden del mismo, por ende el entendimiento de la idea, crear un ritmo.

Fractales

Un fractal es un objeto semigeométrico cuya estructura básica, fragmentada o irregular, se repite a diferentes escalas.1 El término fue propuesto por el matemático Benoît Mandelbrot en 1975 y deriva del Latín fractus, que significa quebrado o fracturado. Muchas estructuras naturales son de tipo fractal. Una mejor manera para comprender el comportamiento fractal de nuestro universo es considerar la siguiente definición: "Patrones que se repiten a distintas escalas". A un objeto geométrico fractal se le atribuyen las siguientes características:2 Es demasiado irregular para ser descrito en términos geométricos tradicionales. Posee detalle a cualquier escala de observación. Es autosimilar (exacta, aproximada o estadística). Su dimensión de Hausdorff-Besicovitch es estrictamente mayor que su dimensión topológica. Se define mediante un simple algoritmo recursivo. No nos basta con una sola de estas características para definir un fractal. Por ejemplo, la recta real no se considera un fractal, pues a pesar de ser un objeto autosimilar carece del resto de características exigidas.

Algoritmo Recursivo Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o recurrente. FUNCIÓN Factorial(n)

   VAR resultado: Entero

   SI (n<2) ENTONCES
       resultado = 1;
   SINO
       resultado = n * Factorial(n-1);
   FSI

   RETORNA resultado;

FFUNCIÓN Generalmente, si la primera llamada al subprograma se plantea sobre un problema de tamaño u orden N, cada nueva ejecución recurrente del mismo se planteará sobre problemas, de igual naturaleza que el original, pero de un tamaño menor que N. De esta forma, al ir reduciendo progresivamente la complejidad del problema a resolver, llegará un momento en que su resolución sea más o menos trivial (o, al menos, suficientemente manejable como para resolverlo de forma no recursiva). En esa situación diremos que estamos ante un caso base de la recursividad. Las claves para construir un subprograma recurrente son: Cada llamada recurrente se debería definir sobre un problema de menor complejidad (algo más fácil de resolver). Ha de existir al menos un caso base para evitar que la recurrencia sea infinita. Es frecuente que los algoritmos recurrentes sean más ineficientes en tiempo que los iterativos aunque suelen ser mucho más breves en espacio.

Un método usual de simplificación de un problema complejo es la división de este en subproblemas del mismo tipo. Esta técnica de programación se conoce como divide y vencerás y es el núcleo en el diseño de numerosos algoritmos de gran importancia, así como también es parte fundamental de la programación dinámica.

El ejemplo del cálculo recursivo del factorial de un número llevado al campo de la programación, en este ejemplo C++: int factorial (int x) {

 if (x < 2) return 1; // Caso base: Cuando X < 2 devolvemos 1 puesto que 1! = 1
 return x*factorial(x - 1); // Si X >= 2 devolvemos el producto de 'X' por el factorial de 'X'-1

} El seguimiento de la recursividad programada es casi exactamente igual al ejemplo antes dado, para intentar ayudar a que se entienda mejor se ha acompañado con muchas explicaciones y con colores que diferencia los distintos sub-procesos de la recursividad. X = 3 //Queremos 3!, por lo tanto X inicial es 3 X >= 2 -> return 3*factorial(2);

   X = 2 //Ahora estamos solicitando el factorial de 2
   X >= 2 -> return 2*factorial(1);
       X = 1 // Ahora estamos solicitando el factorial de 1
       X < 2 -> return 1;
       [En este punto tenemos el factorial de 1 por lo que volvemos marcha atrás resolviendo todos los resultados]
   return 2 [es decir: return 2*1 = return 2*factorial(1)]

return 6 [es decir: return 3*2 = return 3*factorial(2)*factorial(1)] // El resultado devuelto es 6


Roger Penrose

(nacido el 8 de agosto de 1931) es un físico matemático nacido en Inglaterra y Profesor Emérito de Matemáticas en la Universidad de Oxford. En 1967, Penrose inventó la teoría de twistores que mapea objetos geométricos de un espacio de Minkowski en un espacio complejo en 4 dimensiones con la signatura métrica (2,2). En 1969 conjeturó la hipótesis de censura cósmica. Esta propone (de forma informal) que el universo nos protege de la inherente impredictibilidad de las singularidades (como los agujeros negros) ocultándolos de la vista. Esta forma es conocida actualmente como la hipótesis débil de la censura; en 1979, Penrose formuló una versión más firme llamada la hipótesis fuerte de la censura. En conjunción con la conjetura BKL y problemas con la estabilidad no lineal, resolver la conjetura de la censura cósmica es uno de los problemas más importantes en la teoría de la relatividad.

Teoría de Twistores

La teoría de twistores es la teoría matemática propuesta inicialmente en 1967 por Roger Penrose que mapea los objetos geométricos del espacio-tiempo tetradimensional (espacio de Minkowski) en los objetos geométricos en el espacio complejo 4-dimensional con la signatura métrica (2, 2). Las coordenadas en tal espacio se llaman twistores. Por un momento hubo esperanzas de que la teoría de twistores fuera el enfoque directo hacia solucionar la gravedad cuántica, pero esto ahora se considera poco probable. El enfoque de twistores parece ser especialmente natural para solucionar las ecuaciones del movimiento de los campos sin masa de espín arbitrario.

Visualización Penrose http://www.youtube.com/watch?v=lFQVxb5zbt4


Recursión Recurrencia Recursión (incorrecto en castellano) o recursividad es la forma en la cual se especifica un proceso basado en su propia definición. Siendo un poco más precisos, y para evitar el aparente círculo sin fin en esta definición: Un problema que pueda ser definido en función de su tamaño, sea este N, pueda ser dividido en instancias más pequeñas (< N) del mismo problema y se conozca la solución explícita a las instancias más simples, lo que se conoce como casos base, se puede aplicar inducción sobre las llamadas más pequeñas y suponer que estas quedan resueltas. Para que se entienda mejor a continuación se exponen algunos ejemplos: Factorial(x: Entero): Sea N := x el tamaño del problema, podemos definir el problema de forma recurrente como x*Factorial(x - 1); como el tamaño de Factorial(x - 1) es menor que N podemos aplicar inducción por lo que disponemos del resultado. El caso base es el Factorial(0) que es 1. Ordenación por fusión(v: vector): Sea N := tamaño(v), podemos separar el vector en dos mitades. Estas dos mitades tienen tamaño N/2 por lo que por inducción podemos aplicar la ordenación en estos dos subproblemas. Una vez tenemos ambas mitades ordenadas simplemente debemos fusionarlas. El caso base es ordenar un vector de 0 elementos, que está trivialmente ordenado y no hay que hacer nada. En estos ejemplos podemos observar como un problema se divide en varias (>= 1) instancias del mismo problema, pero de tamaño menor gracias a lo cual se puede aplicar inducción, llegando a un punto donde se conoce el resultado (el caso base).. Nota: aunque los términos "recursión" y "recursividad" son ampliamente empleados en el campo de la informática, el término correcto en castellano es recurrencia. Sin embargo este último término es algo más específico. Véase relación de recurrencia.

Autopoiesis auto, sí mismo poiesis, creación - producción

Los seres vivos son redes de producciones moleculares en las que las moléculas producidas generan con sus interacciones la misma red que las produce. Maturana (Transformación en la convivencia)

Boolean

Definición [editar]

El Álgebra de Boole es una estructura algebraica que puede ser considerada desde distintos puntos de vista matemáticos: Como retículo [editar] El álgebra de Boole es un retículo (A, 1,0, , +), donde el conjunto A = {1,0}, como retículo presenta las siguientes propiedades, las leyes principales son estas: 1. Ley de Idempotencia: 2. Ley de Asociatividad: 3. Ley de Conmutatividad: 4. Ley de Cancelativo Como anillo [editar] El Álgebra de Boole tiene Estructura algebraica de Anillo: Grupo abeliano respecto a (+) [editar] El conjunto A es un Grupo abeliano respecto a (+): 1. (+) es una operación interna en A: 2. Es asociativa: 3. Tiene elemento neutro 4. Tiene elemento simétrico: 5. es conmutativa: Grupo abeliano respecto a (·) [editar] El conjunto A es un Grupo abeliano respecto a (): 6. () es una operación interna en A: 7. Es asociativa: 8. Tiene elemento neutro 9. Tiene elemento simétrico: 10. es conmutativa: El conjunto A={0,1} es un Grupo abeliano respecto a (): 6. () es una operación interna en A: 7. Es asociativa: 8. Tiene elemento neutro 9. Tiene elemento simétrico: 10. es conmutativa: Distributivo [editar] El conjunto A es un Grupo abeliano respecto a (+) y () y es distributiva: 11. La operación (+) es distributiva respecto a (): 12. La operación () es distributiva respecto a (+): Como resultado podemos decir que el Álgebra de Boole tiene Estructura algebraica de anillo conmutativo y con elemento neutro respecto a las dos operaciones (+) y ().


Leyes fundamentales [editar]

El resultado de aplicar cualquiera de las tres operaciones definidas a variables del sistema booleano resulta en otra variable del sistema, y este resultado es único. 1. Ley de idempotencia: 2. Ley de involución: 3. Ley conmutativa: 4. Ley asociativa: 5. Ley distributiva: 6. Ley de cancelación: 7. Leyes de De Morgan:


Retículo (Orden)

En matemática, un retículo es una estructura, que puede definirse mediante teoría de conjuntos y mediante álgebra.

Definición como conjunto ordenado [editar]

En teoría de conjuntos, un retículo, red o lattice es un conjunto parcialmente ordenado en el cual todo subconjunto finito no vacío tiene un supremo y un ínfimo. El término "retículo" viene de la forma de los diagramas de Hasse de tales órdenes. Definición algebraica [editar]

En álgebra, un retículo es un conjunto L, provisto de dos operaciones binarias y , tales que para cualesquiera a, b, c en L, a a = a a a = a leyes de idempotencia a b = b a a b = b a leyes de conmutatividad a (b c) = (a b) c a (b c) = (a b) c leyes de asociatividad a (a b) = a a (a b) = a leyes de absorción (las leyes de idempotencia se pueden deducir de las leyes de absorción y por lo tanto no tienen que ser establecidas por separado.) Si las dos operaciones satisfacen estas reglas algebraicas entonces definen un orden parcial ≤ en L por la regla siguiente: a ≤ b ssi a b = b, o, equivalentemente, a b = a. L, junto con el orden parcial ≤ así definido, sería entonces un retículo en el sentido orden-teórico antedicho. Inversamente, si se da un retículo orden-teórico (L, ≤), y escribimos a b para el supremo de {a, b} y a b para el ínfimo de {a, b}, entonces (L, ) satisface todos los axiomas de un retículo definido algebraicamente.


VISUALIZACION http://demonstrations.wolfram.com/BooleanAlgebra/


Diagrama de Hasse

En matemáticas, un diagrama de Hasse es una representación gráfica simplificada de un conjunto parcialmente ordenado finito. Esto se consigue eliminando información redundante. Para ello se dibuja una arista ascendente entre dos elementos solo si uno sigue a otro sin haber otros elementos intermedios. En un diagrama de Hasse se elimina la necesidad de representar: ciclos de un elemento, puesto que se entiende que una relación de orden parcial es reflexiva. aristas que se deducen de la transitividad (matemática) de la relación.



El diagrama de Hassee de S se define como el conjunto de todos los pares ordenados (x,y) tal que y sigue a x, es decir el diagrama de Hasse se puede identificar con la relación de seguir.


Conjunto "Se entiende por conjunto a la agrupación en un todo de objetos bien diferenciados de nuestra intuición ó nuestra mente." Georg Cantor


Particiones: Ramanujan http://www.didactika.com/articulos/0501.html

Minkowski: Teoría elemental de números En la teoría elemental de números, se estudian los números enteros sin emplear técnicas procedentes de otros campos de las matemáticas. Pertenecen a la teoría elemental de números las cuestiones de divisibilidad, el algoritmo de Euclides para calcular el máximo común divisor, la factorización de los enteros como producto de números primos, la búsqueda de los números perfectos y las congruencias. Son enunciados típicos el pequeño teorema de Fermat y el teorema de Euler que lo extiende, el teorema chino del resto y la ley de reciprocidad cuadrática. En esta rama se investigan las propiedades de las funciones multiplicativas como la función de Möbius y la función φ de Euler; así como las sucesiones de números enteros como los factoriales y los números de Fibonacci. Diversos cuestionamientos dentro de la teoría elemental de números parecen simples, pero requieren consideraciones muy profundas y nuevas aproximaciones, incluyendo las siguientes: Conjetura de Goldbach sobre que todos los números pares (a partir de 4) son la suma de dos números primos. Conjetura de los números primos gemelos sobre la infinitud de los llamados números primos gemelos Último teorema de Fermat (demostrado en 1995) Hipótesis de Riemann sobre la distribución de los ceros de la función zeta de Riemann, íntimamente conectada con el problema de la distribución de los números primos.

Visualización

Bibliografía

Ilustradores

Dibujo Digital

Processing

Tex