как из 1 класса передать координаты фигуры во 2 класс, после перетаскивания фигуры

У меня есть 2 класса. в 1 классе создается прямоугольник и так же сделана функция перетаскивания в 2 классе рисуется линия

я пытался с помощью event отловить перемещение и потом передавать координаты, но не смог реализовать

как передавать координаты прямоугольников из класса фигур в класс линий и рисовать линию когда прямоугольник перемещается

вот код

var width = 1425,
    height = 1000;

var svg = d3.select("body").append("svg");

svg.attr("height", height)
    .attr("width", width);


var deltaX, deltaY;

class Rect {
    constructor(x_block, y_block) {
        this.x_block = x_block;
        this.y_block = y_block;
    }

    get_rect() {
        var name = svg.append("rect")
            .attr("href", "#pointer")
            .style("fill", "aliceblue")
            .style("stroke", "grey")
            .style("stroke-width", "2")
            .attr("x", this.x_block)
            .attr("y", this.y_block)
            .attr("width", 150)
            .attr("height", 200)
            .attr("rx", 3);


        var dragHandler = d3.drag()
            .on("start", function () {
                var current = d3.select(this);
                deltaX = current.attr("x") - d3.event.x;
                deltaY = current.attr("y") - d3.event.y;
            })

            .on("drag", function () {
                d3.select(this)
                    .attr("x", d3.event.x + deltaX)
                    .attr("y", d3.event.y + deltaY);


            });

        dragHandler(svg.selectAll("rect"));


    }


}

class Lines {
    constructor(rect1, rect2) {
        this.x1_block = rect1.x_block;
        this.y1_block = rect1.y_block;
        this.x2_block = rect2.x_block;
        this.y2_block = rect2.y_block;
    }


    ad_line() {

        var line1 = svg.append("svg").append('path').attr('d', `M ${this.x1_block + 150}, ${this.y1_block + 100} Q ${(this.x2_block) - (this.x1_block)},${(this.y2_block)} ${this.x2_block},${this.y2_block + 100}`).attr('fill', 'none').attr("stroke", "red")
    }
}

var rect3 = new Rect(400, 200)
var rect4 = new Rect(850, 450)
rect3.get_rect()
rect4.get_rect()



var line_x = new Lines(rect3, rect4)
line_x.ad_line()
svg line{
    stroke: grey;
    stroke-width: 2;

}
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="css/style.css">
    <script type="text/javascript" src="node_modules/d3/dist/d3.min.js"></script>
    <script src = "https://d3js.org/d3-drag.v1.min.js"></script>
    <script src="https://d3js.org/d3.v4.min.js"></script>

</head>
<body>
    <script src="scripts/script.js"></script>
    <div class="svg-container">
        <svg id="click" xmlns="http://www.w3.org/2000/svg" >
            <defs>
                <g id="pointer" transform="scale(0.8)">
                    <path d="M0-1c-14.5-25.6-14.5-25.7-14.5-33.8c0-8.1,6.5-14.6,14.5-14.6s14.5,6.6,14.5,14.6C14.5-26.7,14.5-26.6,0-1z"></path>
                    <path d="M0-49c7.7,0,14,6.3,14,14.1c0,8,0,8.1-14,32.8c-14-24.7-14-24.9-14-32.8C-14-42.7-7.7-49,0-49 M0-50c-8.3,0-15,6.8-15,15.1 S-15-26.5,0,0c15-26.5,15-26.5,15-34.9S8.3-50,0-50L0-50z"></path>
                </g>
            </defs>
        </svg>
    </div>
</body>
</html>


Ответы (0 шт):