Anonymous
Как вычислить угол от точки до середины линии?
Сообщение
Anonymous » 10 ноя 2024, 05:34
Я хочу вычислить угол, образованный отрезком линии от p1 до середины линии, соединяющей p2 и p3, и линией, образованной p2 и p3. Я использовал код, показанный ниже, но результат кажется неправильным. Кто-нибудь мне поможет?
Код: Выделить всё
def calculateAngle(point1, point2, point3):
lon1, lat1 = point1
lon2, lat2 = point2
lon3, lat3 = point3
latCenter = (lat2 + lat3) / 2
lonCenter = (lon2 + lon3) / 2
xV1 = latCenter - lat1
yV1 = lonCenter - lon1
xV2 = lat3 - lat1
yV2 = lon3 - lon1
dotProduct = xV1 * xV2 + yV1 * yV2
magnitudeV1 = sqrt(xV1 ** 2 + yV1 ** 2)
magnitudeV2 = sqrt(xV2 ** 2 + yV2 ** 2)
if magnitudeV1 == 0 or magnitudeV2 == 0:
return 0
cosTheta = dotProduct / (magnitudeV1 * magnitudeV2)
cosTheta = max(min(cosTheta, 1), -1)
theta = acos(cosTheta)
angleInDegrees = degrees(theta)
return angleInDegrees, theta
Подробнее здесь:
https://stackoverflow.com/questions/791 ... -of-a-line
1731206087
Anonymous
Я хочу вычислить угол, образованный отрезком линии от p1 до середины линии, соединяющей p2 и p3, и линией, образованной p2 и p3. Я использовал код, показанный ниже, но результат кажется неправильным. Кто-нибудь мне поможет? [code]def calculateAngle(point1, point2, point3): lon1, lat1 = point1 lon2, lat2 = point2 lon3, lat3 = point3 latCenter = (lat2 + lat3) / 2 lonCenter = (lon2 + lon3) / 2 xV1 = latCenter - lat1 yV1 = lonCenter - lon1 xV2 = lat3 - lat1 yV2 = lon3 - lon1 dotProduct = xV1 * xV2 + yV1 * yV2 magnitudeV1 = sqrt(xV1 ** 2 + yV1 ** 2) magnitudeV2 = sqrt(xV2 ** 2 + yV2 ** 2) if magnitudeV1 == 0 or magnitudeV2 == 0: return 0 cosTheta = dotProduct / (magnitudeV1 * magnitudeV2) cosTheta = max(min(cosTheta, 1), -1) theta = acos(cosTheta) angleInDegrees = degrees(theta) return angleInDegrees, theta [/code] [img]https://i.sstatic.net/JpJE6hB2.png[/img] Подробнее здесь: [url]https://stackoverflow.com/questions/79174041/how-to-calculate-the-angle-from-a-point-to-midpoint-of-a-line[/url]