给定两个方形点(x,y),找到另外两个绘制正方形

时间:2014-10-12 19:48:18

标签: java

我只有两分才能画出一个正方形。

例如,如果我有A(4,4)和B(5,0),我需要按SHIFT绘制方形(方形的方向由SFHIT单击后鼠标的位置给出)

我有等式y = m * x + b的线(4,4) - > (5,0)我可以知道在特定时刻鼠标是否在线的上方或下方。

我的难点在于找到另外两个顶点,这样我就可以画线并且有一个正方形。

我知道这不仅仅是数学,而是编程,或者更好,都是关于数学的,但如果有人可以帮助我,我会感到骄傲。

由于

1 个答案:

答案 0 :(得分:1)

以下是我要做的事情:

  • 计算经过鼠标指向的点并与线正交的线的方向矢量V(AB)

  • 规范化V

  • 计算A' (相应B')通过向量范数(AB)的转换得出A(相应的B)的图像.V

  • 画出ABB' A'方

生成的方块将按用户自然期望的方式定向。代码可能是这样的,自定义Point类也用于表示向量:

public void drawSquare(Point A, Point B, Point mouse) {
    // v is the normal vector or line (AB) which norm is distance(A,B)
    Point v = new Point(B.x - A.x,A.y- B.y);
    v       = v.dot(mouse.subtract(B)) < 0 ? v.opposite() : v;
    // translate A and B and draw the square
    draw(new Square(A,B,B.sum(v),A.sum(v)));
}

我希望没有任何标志错误!