Известны координаты черных точек. ширина прямоугольника равна 10. Как я могу определить все координаты прямоугольника?Как определить координаты прямоугольника, если я знаю две средние координаты?
http://i.stack.imgur.com/Sc2oz.jpg
Известны координаты черных точек. ширина прямоугольника равна 10. Как я могу определить все координаты прямоугольника?Как определить координаты прямоугольника, если я знаю две средние координаты?
http://i.stack.imgur.com/Sc2oz.jpg
По ширине = 10, я полагаю, короткая сторона имеет ширину 10. Половина ее ширины, таким образом, 5.
Давайте сначала найти вектор, идущий от L к R, затем нормализовать его до длины 1 и растянуть на длину 5. Позволяет называть этот вектор A. A можно рассчитать следующим образом: A = 5 * (RL)/| RL |.
Теперь можно поворачивать на 90 градусов по часовой стрелке или против часовой стрелки и наносить на L, чтобы получить S или W соответственно.
Точно так же A можно поворачивать на 90 градусов по часовой стрелке или против часовой стрелки и наносить на R, чтобы управлять E или N соответственно.
То есть:
S = L + А * Поворот (-90)
W = L + А * Поворот (90)
Е = R + A * Поворот (-90)
N = R + A * Поворот (90)
, где Поворот (х) матрицу вращения для поворота вектора х градусов против часовой стрелки, как это определено в https://en.wikipedia.org/wiki/Rotation_matrix
Полные расчеты:
Ах = 5 * (Rx-лк)/SQRT ((Rx-лк)^2 + (Ry-Ly)^2)
Ау = 5 * (Рыбаков Ly)/SQRT ((Rx-лк)^2 + (Ry-Ly)^2)
S = (Lx + Ау, Ly - Ах)
W = (Lx - Ау, Ly + Ах)
Е = (Rx + Ау, Ry - Ах)
N = (Rx - Ay, Ry + Ax)
Давайте M0, M1 - черные точки.
//vector M0-M1
mx = M1.X - M0.X
my = M1.Y - M0.Y
//perpendicular vector
px = - my
py = mx
//it's length
lp =Sqrt(px*px + py*py)
//unit perp. vector
upx = px/lp
upy = py/lp
//vertices
V1.x = M0.X + 5 * upx
V1.y = M0.Y + 5 * upy
V2.x = M0.X - 5 * upx
V2.y = M0.Y - 5 * upy
//the same for M1 and V3, V4
Возможно, вы указали координаты углов? –
yep, координаты углов – Marie