J
JTOne
Подскажите как нарисовать стрелочку, т.е. 1 линию я рисую drawLine(x1,y1,x2,y2), потом мне нужно нарисовать еще две линии которые будут делать из моей линии стрелочку, логично предположить что две начальные координаты будут совпадать с двумя первыми мое линии, а как найти второй x и y.
Ту незадача в том, что я не знаю под каким углом будет лежать моя линия, я перехожу из декартовой в полярную систему и нахожу свои x и y, но когда линия относительно вертикальная что то даже похоже получается , но когда я рисую горизонтальную 2 линии мое стрелочки уходят кудато, подскажите че делать?
Вот код:
d=Math.sqrt( Math.pow(x2-x1,2)+Math.pow(y2-y1,2) );
ygolCos=Math.abs((x2-x1)/d);
ygolSin=Math.abs((y2-y1)/d);
int ny=1;
if(y1<y2)
ny=-1;
else
ny=1;
float f1x2=Float.valueOf(String.valueOf(ny*40*(ygolCos+Math.cos(20))+(x2+100)));
float f1y2=Float.valueOf(String.valueOf(ny*40*(ygolSin+Math.sin(20))+(y2+100)));
float f2x2=Float.valueOf(String.valueOf(ny*40*(ygolCos-Math.cos(20))+(x2+100)));
float f2y2=Float.valueOf(String.valueOf(ny*40*(ygolSin-Math.sin(20))+(y2+100)));
g.drawLine(x2+100,y2+100,Math.round(f1x2),Math.round(f1y2));//линии стерлочек
g.drawLine(x2+100,y2+100,Math.round(f2x2),Math.round(f2y2));//линии стерлочек
g.drawLine(x1+100,y1+100,x2+100,y2+100);//основанная линия
Ту незадача в том, что я не знаю под каким углом будет лежать моя линия, я перехожу из декартовой в полярную систему и нахожу свои x и y, но когда линия относительно вертикальная что то даже похоже получается , но когда я рисую горизонтальную 2 линии мое стрелочки уходят кудато, подскажите че делать?
Вот код:
d=Math.sqrt( Math.pow(x2-x1,2)+Math.pow(y2-y1,2) );
ygolCos=Math.abs((x2-x1)/d);
ygolSin=Math.abs((y2-y1)/d);
int ny=1;
if(y1<y2)
ny=-1;
else
ny=1;
float f1x2=Float.valueOf(String.valueOf(ny*40*(ygolCos+Math.cos(20))+(x2+100)));
float f1y2=Float.valueOf(String.valueOf(ny*40*(ygolSin+Math.sin(20))+(y2+100)));
float f2x2=Float.valueOf(String.valueOf(ny*40*(ygolCos-Math.cos(20))+(x2+100)));
float f2y2=Float.valueOf(String.valueOf(ny*40*(ygolSin-Math.sin(20))+(y2+100)));
g.drawLine(x2+100,y2+100,Math.round(f1x2),Math.round(f1y2));//линии стерлочек
g.drawLine(x2+100,y2+100,Math.round(f2x2),Math.round(f2y2));//линии стерлочек
g.drawLine(x1+100,y1+100,x2+100,y2+100);//основанная линия