Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
самалёт
Зарегистрирован: 14.11.2007 Сообщения: 8
|
Добавлено: Ср Ноя 14, 2007 1:54 pm Заголовок сообщения: углы и гориз. проложения |
|
|
Здрасьти.
такой вопрос. пишу довольно банальную програмку для оформления отчетов. Значит в отчете должны отображаца ,кроме собсно изображения самого объекта, координаты объекта (полигон 4 и более точек) и углы и длинны линий(горизонтальные проложения). Если с координатами никаких проблем нет(узвлекаю функцией NodeX, NodeY)(вроде так)), а как извлечь углы и длинны линий? неужто только путем решения обратной геодезической задачи? бррр. _________________ кхе кхе... так и будет |
|
Вернуться к началу |
|
|
fursov
Зарегистрирован: 19.03.2007 Сообщения: 6
|
Добавлено: Чт Ноя 15, 2007 5:54 pm Заголовок сообщения: |
|
|
Странно, зачем в отчёте длины и углы, если есть координаты узлов полигона? А проблема решается по арифметике пупкина: расстояние между узлами = корень квадратный из суммы квадратов разностей соответствующих координат, а о косинусе угола между двумя векторами даже писать смешно. (см. справочник по высшей математике ) |
|
Вернуться к началу |
|
|
самалёт
Зарегистрирован: 14.11.2007 Сообщения: 8
|
Добавлено: Пт Ноя 16, 2007 7:28 am Заголовок сообщения: |
|
|
Про высшую математику-то понятно, это и есть обратная геодезическая. Я имел в виду есть ли оператор, позволяющий извлечь угол или длинну без таких вот вычислений. Зачем? Ну, например, если тупо лень расписывать формулы.
А углы и линии в отчете вместе с координатами по простой логике действительно не нужны. Но такой утвержденый вид документа. Я тоже спрашивал у начальства, почему нельзя обойтись без них. Ответ был: нельзя и все! _________________ кхе кхе... так и будет |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Пт Ноя 16, 2007 10:33 am Заголовок сообщения: |
|
|
Нет функции, решать самому. Собственно Инструментарий так и делает. Думаю, что на родине MapInfo вообще мало кто слышал про понятие Дирекционного угла, поэтому в Mapinfo и нет такой функции. А длина есть - Distance |
|
Вернуться к началу |
|
|
самалёт
Зарегистрирован: 14.11.2007 Сообщения: 8
|
Добавлено: Пт Ноя 16, 2007 10:47 am Заголовок сообщения: |
|
|
Спасибо. Углы придется всетаки вычислять. _________________ кхе кхе... так и будет |
|
Вернуться к началу |
|
|
SteFF
Зарегистрирован: 08.10.2009 Сообщения: 1
|
Добавлено: Чт Окт 08, 2009 5:49 pm Заголовок сообщения: 2самалёт |
|
|
Так как с проблемой вычисления углов и расстояний по координатам? Просто я не владею MapBasic'ом, и мне нужна одна-единственная утилитка для вычисления румбов поворотных точек полилинии (углы и расстояния до следующей точки). ИДМ конечно хорош, но дороговато, притом что мне нужна всего одна функция. В просторах интернета есть утилитки для дирекционных углов, но там линию нужно рисовать самому. |
|
Вернуться к началу |
|
|
Nick4
Зарегистрирован: 15.10.2011 Сообщения: 95
|
Добавлено: Пт Июл 14, 2017 2:26 pm Заголовок сообщения: |
|
|
function ugol(Byval x as float,byval x1 as float,byval y as float,byval y1 as float) as float ' возвращает угол линии в радианах относительно севера
dim ugl as float
if x=x1 then
if y1>y then
ugl=90*DEG_2_RAD
else
ugl=270*DEG_2_RAD
end if
else
ugl=atn( abs((y1-y)) / (abs(x1-x)) )
if y<=y1 and x>x1 then
ugl=180*DEG_2_RAD-ugl
end if
if y>y1 and x>x1 then
ugl=180*DEG_2_RAD+ugl
end if
if y>y1 and x<x1 then
ugl=360*DEG_2_RAD-ugl
end if
end if
ugol=ugl
end function
function ugol_line(Byval ug1 as float,byval ug2 as float) as float ' возвращает внутренний угол в радианах между линиями, ug1,ug2 - углы линий
dim perm as float
perm=ug2-ug1
if abs(perm)>180*DEG_2_RAD then
ugol_line=(ug2-ug1)-360*DEG_2_RAD*perm/abs(perm)
else
ugol_line=ug2-ug1
end if
end function
Первой функцией вычисляем углы каждой линии. Второй функцией получаем угол между линиями. |
|
Вернуться к началу |
|
|
|