Вращение и перевод дуги SWT - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно реализовать ребра, которые соединяют разные диаграммы.Край может быть изогнутой линией, и я реализую ее с использованием библиотеки SWT. Моя проблема в том, что когда 2 точки не находятся на одной оси y, мне нужно повернуть дугу, но координаты дуги смещены вправо, т.е.не могу понять точно, почему.Я весь день пытался установить любое значение для перевода, не найдя решения

Мой код:

    @Override
public void paintControl(PaintEvent e) {
            Point p = oval1.getP();
            p1=p;
            p = oval2.getP();
            p2=p;
            double theta = Math.atan2(p2.y - p1.y, p2.x - p1.x);
            Transform t=new Transform(canvasContainer.getDisplay());

            float angle = (float) Math.toDegrees(Math.atan2(p2.y - p1.y, p2.x - p1.x));

            if(angle < 0){
                angle += 360;
            }

            int distance = (int) Math.sqrt((p2.x-p1.x)*(p2.x-p1.x) + (p2.y-p1.y)*(p2.y-p1.y));
            t.rotate((float) angle);
            t.translate((float) (theta*250),- (float) (theta*100));

            e.gc.setTransform(t);

            e.gc.drawArc(p1.x, p1.y-25, distance, 50, 0, 180);

            t.rotate(-(float)angle);
            e.gc.setTransform(t);


        }

    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...