Miguel Angel Adofacci - Proyecto I E 2017

De Casiopea



TítuloProyecto Imagen Escrita - Simulación de Acoplamiento Mecánico
AsignaturaImagen Escrita 2017
Del CursoImagen Escrita
CarrerasDiseñ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 grad; float gradvel; float r; int i =1; boolean rot = false; Punto[] puntos = new Punto[5];


void setup() {

 size(500, 500);
 r = height;
 grad=0;
 grad=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(grad-53.13)))+((width/10)*7), r* -0.5*(cos(radians(grad-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;
 }

}

</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). Otra complejidad yace en mantener fija la distancia entre dos puntos móviles (como en el segundo programa) donde la distancia entre los puntos c y d (unidos por el trazo azul) debe ser constante, sin embargo la velocidad de rotacion de ambos no permite esto.