Miguel Angel Adofacci - Proyecto I E 2017
Título | Proyecto Imagen Escrita - Simulación de Acoplamiento Mecánico |
---|---|
Asignatura | Imagen Escrita 2017 |
Del Curso | Imagen Escrita |
Carreras | Diseño Industrial"Diseño Industrial" is not in the list (Arquitectura, Diseño, Magíster, Otra) of allowed values for the "Carreras Relacionadas" property. |
Alumno(s) | Miguel Angel Adofacci |
Pestaña Programa 01
float grad; float gradvel; float r; boolean rot = false; Punto[] puntos = new Punto[5]; void setup() { size(500, 500); r = height; grad=0; gradvel = 0.01; } void draw() { background(255); puntos[0] = new Punto ((width/10)*3, height/10*9); puntos[1] = new Punto (r* 0.5*(sin(grad))+((width/10)*3), r* -0.5*(cos(grad))+((height/10)*9)); puntos[2] = new Punto (((width/10)*7), height/10*9); puntos[3] = new Punto (r* 0.5*(cos(grad+36.07+180))+((width/10)*7), r*-0.5*(sin(grad+36.07+180))+(height/10*9)); puntos[4] = new Punto ((puntos[1].xpos +puntos[3].xpos)/2, (puntos[1].ypos +puntos[3].ypos)/2); stroke(255, 0, 0 ); line(puntos[0].xpos, puntos[0].ypos, puntos[1].xpos, puntos[1].ypos); line(puntos[2].xpos, puntos[2].ypos, puntos[3].xpos, puntos[3].ypos); stroke (0, 0, 255); line(puntos[1].xpos, puntos[1].ypos, puntos[3].xpos, puntos[3].ypos); //velocidad de giro grad += gradvel; println("distancia" + round(dist(puntos[1].xpos, puntos[1].ypos, puntos[3].xpos, puntos[3].ypos))); } //encendido y apagado void keyPressed () { if (gradvel == 0.01) { gradvel = 0; } else { gradvel = 0.01; } }
Pestaña Objeto
class Punto { float xpos, ypos; Punto (float x, float y) { xpos =x; ypos =y; noStroke(); fill(29, 126, 236); ellipseMode(CENTER); ellipse(x, y, width/80, height/80); //dibuja un círculo en la posicion de cada punto } }
Prueba Acoplamiento de Hoekens
<processingjs> float grad; float gradvel; float r; boolean rot = false; Punto[] puntos = new Punto[5];
void setup() {
size(500, 500); r = height; grad=0; gradvel = 0.01;
}
void draw() {
background(255);
puntos[0] = new Punto ((width/10)*3, height/10*7); puntos[1] = new Punto (r* 0.1*(cos(grad))+((width/10)*3), r* 0.1*(sin(grad))+((height/10)*7));
puntos[2] = new Punto (((width/10)*5), height/10*7); puntos[3] = new Punto (r* 0.25*(cos(grad+113.58+180))+((width/10)*5), r*0.25*(sin(grad+113.58+180))+(height/10*7)); stroke(255, 0, 0 ); line(puntos[0].xpos, puntos[0].ypos, puntos[1].xpos, puntos[1].ypos); line(puntos[2].xpos, puntos[2].ypos, puntos[3].xpos, puntos[3].ypos); line(puntos[1].xpos, puntos[1].ypos, puntos[3].xpos, puntos[3].ypos);
//velocidad de giro grad += gradvel;
// println("coordenadas" + round(puntos[2].xpos - puntos[3].xpos), round( puntos[2].ypos - puntos[3].ypos)); // println("distancia" + round(dist(puntos[2].xpos, puntos[2].ypos, puntos[3].xpos, puntos[3].ypos)));
translate(puntos[1].xpos, puntos[1].ypos); PVector v1 = new PVector(puntos[3].xpos, puntos[3].ypos); // PVector v2 = PVector.mult(v1, 2); line(0, 0, v1.x, v1.y);
}
//encendido y apagado void keyPressed () {
if (gradvel == 0.01) { gradvel = 0; } else { gradvel = 0.01; }
}
class Punto {
float xpos, ypos; Punto (float x, float y) { xpos =x; ypos =y;
noStroke(); fill(29, 126, 236); ellipseMode(CENTER); ellipse(x, y, width/80, height/80); //dibuja un círculo en la posicion de cada punto }
} </processingjs>
Pestaña Programa 02
float grad; float grad1; float gradvel; float r; int i =1; boolean rot = false; Punto[] puntos = new Punto[5]; void setup() { size(500, 500); r = height; grad=0; grad1=0; gradvel = 0.1; } void draw() { background(255); puntos[0] = new Punto ((width/10)*3, height/10*9); puntos[1] = new Punto (r* 0.5*(sin(radians(grad)))+((width/10)*3), r* -0.5*(cos(radians(grad)))+((height/10)*9)); puntos[2] = new Punto (((width/10)*7), height/10*9); puntos[3] = new Punto (r* 0.5*(sin(radians(grad1-53.13)))+((width/10)*7), r* -0.5*(cos(radians(grad1-53.13)))+((height/10)*9)); puntos[4] = new Punto ((puntos[1].xpos +puntos[3].xpos)/2, (puntos[1].ypos +puntos[3].ypos)/2); stroke(255, 0, 0 ); line(puntos[0].xpos, puntos[0].ypos, puntos[1].xpos, puntos[1].ypos); line(puntos[2].xpos, puntos[2].ypos, puntos[3].xpos, puntos[3].ypos); stroke (0, 0, 255); line(puntos[1].xpos, puntos[1].ypos, puntos[3].xpos, puntos[3].ypos); if (grad >53.13 || grad < 0) i=-1*i; grad = grad + i*0.5; // println("distancia" + round(dist(puntos[1].xpos, puntos[1].ypos, puntos[3].xpos, puntos[3].ypos))); } //valores de cada punto //encendido y apagado void keyPressed () { if (gradvel == 0.1) { gradvel = 0; } else { gradvel = 0.1; } } class Punto { float xpos, ypos; Punto (float x, float y) { xpos =x; ypos =y; noStroke(); fill(29, 126, 236); ellipseMode(CENTER); ellipse(x, y, width/80, height/80); //dibuja un círculo en la posicion de cada punto } }
Prueba Acoplamiento de Chebyshev
<processingjs>
float grad; float grad1; float gradvel; float r; int i =1; boolean rot = false; Punto[] puntos = new Punto[5];
void setup() {
size(500, 500); r = height; grad=0; grad1=0; gradvel = 0.1;
}
void draw() {
background(255);
puntos[0] = new Punto ((width/10)*3, height/10*9); puntos[1] = new Punto (r* 0.5*(sin(radians(grad)))+((width/10)*3), r* -0.5*(cos(radians(grad)))+((height/10)*9));
puntos[2] = new Punto (((width/10)*7), height/10*9); puntos[3] = new Punto (r* 0.5*(sin(radians(grad1-53.13)))+((width/10)*7), r* -0.5*(cos(radians(grad1-53.13)))+((height/10)*9));
puntos[4] = new Punto ((puntos[1].xpos +puntos[3].xpos)/2, (puntos[1].ypos +puntos[3].ypos)/2);
stroke(255, 0, 0 ); line(puntos[0].xpos, puntos[0].ypos, puntos[1].xpos, puntos[1].ypos); line(puntos[2].xpos, puntos[2].ypos, puntos[3].xpos, puntos[3].ypos); stroke (0, 0, 255); line(puntos[1].xpos, puntos[1].ypos, puntos[3].xpos, puntos[3].ypos);
if (grad >53.13 || grad < 0) i=-1*i; grad = grad + i*0.5;
// println("distancia" + round(dist(puntos[1].xpos, puntos[1].ypos, puntos[3].xpos, puntos[3].ypos))); }
//valores de cada punto
//encendido y apagado void keyPressed () {
if (gradvel == 0.1) { gradvel = 0; } else { gradvel = 0.1; }
}
class Punto {
float xpos, ypos; Punto (float x, float y) { xpos =x; ypos =y;
noStroke(); fill(29, 126, 236); ellipseMode(CENTER); ellipse(x, y, width/80, height/80); //dibuja un círculo en la posicion de cada punto }
}
</processingjs>
Complicaciones
Al utilizar más de un punto de rotación en el mismo programa,y a su vez usar funciones dependientes de valores de diversos objetos (líneas que unen las coordenadas de un objeto con otro), no se puede utilizar la función translate() o rotate(), ya que cambian todo el sistema de coordenadas (incluído el utilizar coordenadas previamente declaradas), mientras que al no utilizar la función rotate(), la complejidad yace en calcular el ángulo de diferencia entre dos ejes distintos sin crear desformaciones al transformar coordenadas polares en cartesianas.