2016-04-08 2 views
0

Известны координаты черных точек. ширина прямоугольника равна 10. Как я могу определить все координаты прямоугольника?Как определить координаты прямоугольника, если я знаю две средние координаты?

http://i.stack.imgur.com/Sc2oz.jpg

+0

Возможно, вы указали координаты углов? –

+0

yep, координаты углов – Marie

ответ

0

enter image description here

По ширине = 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)

0

Давайте 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 
Смежные вопросы