Рисование стрелочки

Тема в разделе "Java", создана пользователем JTOne, 28 апр 2007.

Статус темы:
Закрыта.
  1. JTOne

    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);//основанная линия
     
  2. whiter4bbit

    whiter4bbit Гость

    int x1=e.getVertex1().getX(), x2=e.getVertex2().getX();
    int y1=e.getVertex1().getY(), y2=e.getVertex2().getY();
    double r=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
    double cos=(x1-x2)/(double)r;
    double sin=Math.sqrt(1-cos*cos);
    if(y2>y1) sin=-sin;
    x1=x1+15-(int)(15*cos); x2=x2+15+(int)(15*cos);
    y1= y1+15-(int)(15*sin); y2=y2+15+(int)(15*sin);
    g.drawLine(x1, y1, x2, y2);
    double k=20*Math.cos(Math.PI/6+Math.acos(cos));
    double z=20*Math.sin(Math.PI/6+Math.acos(cos));
    if(y2>y1) z=-z;
    double yz=y2+z;
    double xz=x2+k;
    g.drawLine(x2, y2,(int)xz,(int)yz);
    k=20*Math.cos(Math.PI/6-Math.acos(cos));
    z=20*Math.sin(Math.PI/6-Math.acos(cos));
    if(y2>y1) z=-z;
    yz=y2-z;
    xz=x2+k;
    g.drawLine(x2, y2,(int)xz,(int)yz);

    линия "со стрелочкой"
     
Загрузка...
Похожие Темы - Рисование стрелочки
  1. ilya00
    Ответов:
    17
    Просмотров:
    1.785
  2. vladden
    Ответов:
    1
    Просмотров:
    1.846
  3. 123456789igor
    Ответов:
    1
    Просмотров:
    1.394
  4. sergg
    Ответов:
    11
    Просмотров:
    4.702
  5. bearpaw
    Ответов:
    6
    Просмотров:
    3.778
Статус темы:
Закрыта.

Поделиться этой страницей