Найдите точку пересечения в трех js двух прямых - PullRequest
0 голосов
/ 14 июля 2020

У меня две строчки по три js. Я пытаюсь найти пересечение двух линий, если они растянуты. Я не хочу на самом деле удлинять линии, просто хочу получить точку (?,?). Код ниже всегда дает новую точку в (1,1)

extend() {
    const objactArray = this.object.geometry.attributes.position.array;
    const objectX1:number = objactArray[0];
    const objectY1:number = objactArray[1];
    const objectX2:number = objactArray[3];
    const objectY2:number = objactArray[4];

    const extendingObjactArray = this.extendingObject.geometry.attributes.position.array;
    const extendingObjectX1:number = extendingObjactArray[0];
    const extendingObjectY1:number = extendingObjactArray[1];
    const extendingObjectX2:number = extendingObjactArray[3];
    const extendingObjectY2:number = extendingObjactArray[4];
    
    const A1:number = extendingObjectY2-extendingObjectY1; 
    const B1:number = extendingObjectX1-extendingObjectX2; 
    const C1:number = A1+B1;

    const A2:number = objectY2-objectY1; 
    const B2:number = objectX1-objectX2; 
    const C2:number = A2+B2;

    const delta:number = A1 * B2 - A2 * B1;

    if (delta == 0) 
        console.log("Lines are parallel");

    const x:number = (B2 * C1 - B1 * C2) / delta;
    const y:number = (A1 * C2 - A2 * C1) / delta;

    const geometry:BoxBufferGeometry = new BoxBufferGeometry( 1, 1, 0);
    const material:MeshBasicMaterial = new MeshBasicMaterial( {color: this.MS.color.LINE_POINT, wireframe: false, opacity: 0.5, transparent: true} );
        
    let point:Mesh = new Mesh( geometry, material );
    point.position.setX( x );
    point.position.setY( y );
    point.position.setZ( 0 );
    point.name = "test";
    this.engServ.group.add( point );

   }

введите описание изображения здесь

...