vector - Perpendicular line java -


hello need find perpendicular line another. have 1 initial point(x,y), 1 final point(x, y) , measure de perpendicular line. have tried in various ways i've seen on page i'm doing wrong. whenever line perpendicular axis y o axis x instead of line. know tell me i'm doing wrong?

some links have been looking @ are:

calculate perpendicular offset diagonal line

how calculate end points of perpendicular line segments?

calculate point normal line

thank much.

    canvas.addpaintlistener(new paintlistener() {         public void paintcontrol(paintevent arg0) {                                      ////pruebas con arcos               ///pruebas con perpendiculares                 point centro = new point(0, 0);                 point director = new point(0, 0);                 point normalizado = new point(0, 0);                 point escalado = new point(0, 0);                 point rotado = new point(0, 0);                 point resultadomas = new point(0, 0);                 point resultadomenos = new point(0, 0);                 int coordx1;                 int coordy1;                 int coordx2;                 int coordy2;                 int coordx3;                 int coordy3;                 int coordx4;                 int coordy4;                 int altoarticulo = 80;                   coordx1 = 100;                 coordy1 = 100;                 coordx2 = 600;                 coordy2 = 300;                   //centro                 centro.x = (coordx1 + coordx2)/2;                 centro.y = (coordy1 + coordy2)/2;                                    //vector director                 director.x = centro.x - coordx1;                 director.y = centro.y - coordy1;                 //medida                 double medida = math.sqrt(((math.pow(director.x, 2)) + (math.pow(director.y, 2))));                 //normalizar vector                 normalizado.x = (int)math.round(director.x / medida);                 normalizado.y = (int)math.round(director.y / medida);                                    //rotaciÓn 90 grados                 rotado.x = (normalizado.y * -1);                 rotado.y = normalizado.x;                 //sumar lo obtenido al punto medio                 resultadomas.x = centro.x + (rotado.x * altoarticulo);                 resultadomas.y = centro.y + (rotado.y * altoarticulo);                  resultadomenos.x = centro.x - (rotado.x * altoarticulo);                 resultadomenos.y = centro.y - (rotado.y * altoarticulo);                    //punto4.x = (int) math.round(punto3.x + ((math.signum(vectordirector.y) * -1) * ((math.sin(math.toradians(anguloejey)) * mideescalado))));                 //punto4.y = (int) math.round(punto3.y + ((math.signum(vectordirector.y) * -1) * ((math.cos(math.toradians(anguloejey)) * mideescalado))));                  arg0.gc.setforeground(display.getcurrent().getsystemcolor(swt.color_red));                 arg0.gc.setbackground(display.getcurrent().getsystemcolor(swt.color_red));                 arg0.gc.drawline(coordx1, coordy1, coordx2, coordy2);                                    arg0.gc.drawline(resultadomas.x, resultadomas.y, resultadomenos.x, resultadomenos.y);                 int[] comopinto = {resultadomas.x, resultadomas.y, resultadomas.x + 10, resultadomas.y + 10, resultadomas.x - 10, resultadomas.y + 10};                 arg0.gc.drawpolygon(comopinto);                 arg0.gc.fillpolygon(comopinto);                 int[] comopinto2 = {resultadomenos.x, resultadomenos.y, resultadomenos.x + 10, resultadomenos.y - 10, resultadomenos.x - 10, resultadomenos.y - 10};                 arg0.gc.drawpolygon(comopinto2);                 arg0.gc.fillpolygon(comopinto2);            } 

someone told me mistake , share if helps you. problem here:

normalizado.x = (int)math.round(director.x / medida); normalizado.y = (int)math.round(director.y / medida);

when rounding result invalid.for round coordinates in next step , works properly. thus:

                double normx = rotado.x / medida;                 double normy = rotado.y / medida;                                     //sumar lo obtenido al punto medio                 resultadomas.x = (int) math.round(centro.x + (normx * altoarticulo));                 resultadomas.y = (int) math.round(centro.y + (normy * altoarticulo));                  resultadomenos.x = (int) math.round(centro.x - (normx * altoarticulo));                 resultadomenos.y = (int) math.round(centro.y - (normy * altoarticulo)); 

thank time , regreted.


Comments

Popular posts from this blog

java - UnknownEntityTypeException: Unable to locate persister (Hibernate 5.0) -

python - ValueError: empty vocabulary; perhaps the documents only contain stop words -

ubuntu - collect2: fatal error: ld terminated with signal 9 [Killed] -