Если я вас правильно понимаю, у вас есть две конечные точки, скажем, A (x1, y1) и B (x2, y2), и произвольная ширина для прямоугольника, скажем, w. Я предполагаю, что конечные точки будут только в середине более коротких сторон прямоугольника, означая, что расстояние до конечных координат углов прямоугольника будет w / 2 до A и B.
Вы можете вычислить наклон линии с помощью;
s1 = (y2 - y1) / (x2 - x1) // при условии x1! = X2
Наклон более коротких сторон не что иное, как s2 = -1 / s1.
У нас есть наклон, у нас есть расстояние, и у нас есть контрольные точки.
Мы можем вывести два уравнения для каждой угловой точки:
На один угол ближе к A
C (x3, y3):
(y3 - y1) / (x3 - x1) = s2 // по наклону
(y3 - y1) ^ 2 + (x3 - x1) ^ 2 = (w / 2) ^ 2 // на расстоянии
замена (y3 - y1) на a и (x3 - x1) на b приводит к
a = b * s2 // уравнение наклона
// заменить a на b * s2
b ^ 2 * s2 ^ 2 + b ^ 2 = (w / 2) ^ 2 // уравнение расстояния
b ^ 2 = (w / 2) ^ 2 / (s2 ^ 2 + 1)
b = sqrt ((w / 2) ^ 2 / (s2 ^ 2 + 1))
мы знаем w и s2 и, следовательно, вычисляем b
Если b известно, мы можем вывести x3
x3 = b + x1
и а, а также
a = b * s2
и т. Д. 3
y3 = b * s2 + y1
у нас есть одна угловая точка C (x3, y3).
Чтобы вычислить другую угловую точку ближе к A, скажем, D (x4, y4), уравнение наклона может быть построено как
(y1 - y4) / (x1 - x4) = s2
и вычисления, перечисленные выше, должны быть применены.
Другие два угла можно рассчитать с помощью перечисленных здесь шагов, заменив A (x1, y1) на B (x2, y2).