我只有两分才能画出一个正方形。
例如,如果我有A(4,4)和B(5,0),我需要按SHIFT绘制方形(方形的方向由SFHIT单击后鼠标的位置给出)
我有等式y = m * x + b的线(4,4) - > (5,0)我可以知道在特定时刻鼠标是否在线的上方或下方。
我的难点在于找到另外两个顶点,这样我就可以画线并且有一个正方形。
我知道这不仅仅是数学,而是编程,或者更好,都是关于数学的,但如果有人可以帮助我,我会感到骄傲。
由于
答案 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)));
}
我希望没有任何标志错误!