Как получить углы фигур в тройках - PullRequest
0 голосов
/ 10 октября 2019

Я разрабатываю инструмент для рисования фигур в ThreeJS. Я нарисовал линию, квадрат, круг, прямоугольник, треугольник, эллипс и т. Д. На мышь вниз + успешно перетащить. Теперь я хочу редактировать эти фигуры, такие как масштабирование, перемещение и вращение. Как получить углы и поставить точки в углах, где пользователь может мышью + перетаскивать, чтобы масштабировать, перемещать точки и т. Д.

function onMouseMove(event) {
        if(edit) {
            event.preventDefault();
            if ( selectedObject ) {
                selectedObject.material.color.set( '#49BFFE' );
                selectedObject = null;
            }
            var intersects = getIntersects( event );
            if ( intersects.length > 0 ) {
                var res = intersects.filter( function ( res ) {
                    return res && res.object;
                } )[ 0 ];
                if ( res && res.object ) {
                    selectedObject = res.object;
                    selectedObject.material.color.set( '#f00' );
                    console.log(selectedObject)
                }
            }
        }
    }

Код для создания фигур выглядит следующим образом:

this.onMouseDown = function( relative ) {
        var geometry = new THREE.PlaneBufferGeometry( 1, 1);
        var material = new THREE.MeshBasicMaterial({ color: 0x49BFFE, wireframe: false });
        square = new THREE.Mesh(geometry, material);
        scope.group.add(square);
    }

    this.onDrag = function( clientX, clientY ) {
        var scale = Math.abs(clientX) + Math.abs(clientY);
        if(scale == 0) scale = scale + 0.1;
        square.scale.set(scale, scale, 0.1);
    }
...