Перемещение стрелка помощника от объекта - PullRequest
0 голосов
/ 14 января 2020

Вот то, чего я пытаюсь достичь.

enter image description here

Как вы можете видеть, две стрелки-помощники перемещаются внутрь, а не уходят дальше от предмет. Как я могу отодвинуть его от объекта?

Вот мой код

var startx = wall.getStartX();
    var starty = wall.getStartY();
    var endx = wall.getEndX();
    var endy = wall.getEndY();

    // this section sets how far the arrow should move away
    // this is the part where I'm having trouble
    if (wall.getWallOrientation() == 'horizontal') {
        starty += 50;
        endy += 50;
    } else {
        // vertical 
        startx += 50;
        endx += 50;
    }

    // define start and end point of dimension
    var from = new THREE.Vector3(startx, 0, starty);
    var to = new THREE.Vector3(endx, 0, endy);

    var direction = to.clone().sub(from);
    var length = direction.length();

    var hex = 0x0;
    var arrorGroupHelper = new THREE.Group();
    arrorGroupHelper.add(new THREE.ArrowHelper(direction.normalize(), from, length, hex, 10, 10));
    arrorGroupHelper.add(new THREE.ArrowHelper(direction.negate(), to, length, hex, 10, 10));

Спасибо и больше сил.

1 Ответ

0 голосов
/ 22 января 2020

Получил это работает. Сначала я получаю центр линии, а затем вычисляю угол. Таким образом, я знаю, куда он должен уйти.

var degrees = Utils.angleAccurate(center.x, center.y, lineCenterPoint.x, lineCenterPoint.y);

        var radians = degrees * Math.PI / 180;
        var x = startx + Math.cos(radians) * 30;
        var y = starty + Math.sin(radians) * 30;

var orientation = edge.wall.getWallOrientation();
        if (orientation == 'horizontal') {
            starty = y;
            endy = y;
        } else if (orientation == 'vertical') {
            // vertical 
            startx = x;
            endx = x;
        } 
...