Maksim Yablokv Posted April 14 Report Share Posted April 14 Всем привет! Обнаружил, что функция ANGLE в NC возвращает отличные от AC значение угла. в AC, функция возвращает угол в диапазоне от 0.0 до 2*Pi в NC, функция возвращает угол от 0.0 до Pi и от -Pi до 0.0 В итоге, для совместимости функции в AC и NC, использую такую обёртку: (defun ATP:angle (p1 p2 / ang) (if (minusp (setq ang (angle p1 p2))) (+ pi pi ang) ang ) ) Quote Link to comment Share on other sites More sharing options...
kpblc Posted April 14 Report Share Posted April 14 Думаю, корни этой проблемы там же, где и корни для Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted April 14 Report Share Posted April 14 Эта тема обсуждалась в Строго говоря, отрицательное значение угла ошибкой не является. В некоторых приложениях представление в диапозоне -пи,+пи является более наглядным , чем 0, 2пи. Не совсем понятно, каким боком это относится к совместимости. Оба значения правильные. 23 минуты назад, kpblc сказал: Думаю, корни этой проблемы там же, где и корни для Все же это разные проблемы. Точнее, отрицательное значение представляет собой другую (но тоже верную!) реализацию функции (angle, т.е. проблемой по сути не является. А неверное определение угла функцией (getangle) при изменении точки обзора - это явный косяк. Quote Link to comment Share on other sites More sharing options...
kpblc Posted April 14 Report Share Posted April 14 М-да, плохо писать с телефона Но вроде где-то на форуме подобная тема поднималась, кажется: Quote Link to comment Share on other sites More sharing options...
Maksim Yablokv Posted April 14 Author Report Share Posted April 14 Спасибо за ссылку, что данная тема уже поднималась. Извиняюсь за флуд. Плохо искал. 1 час назад, EdwardSt сказал: Не совсем понятно, каким боком это относится к совместимости. Оба значения правильные. Что тут не понятного? Лично мне нужно, чтобы функция возвращала одинаковые значения, т.к. код будет работать на обоих платформах и в AC и в NC. Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted April 14 Report Share Posted April 14 12 минут назад, Maksim Yablokv сказал: Что тут не понятного? Лично мне нужно, чтобы функция возвращала одинаковые значения, т.к. код будет работать на обоих платформах и в AC и в NC. Я имел ввиду, что оба возвращаемые значения являются правильными. Конечно, могу ошибаться. Я просто не представляю приложения, где угол сам по себе является целевым показателем. Обычно он используется для дальнейшего определения тригонометрических функций (тут ноу проблем), либо для определения направлений (а вот тут возможны варианты). Если нужен азимут, то [0,2пи] - то, что нужно. А, например, при движении на авто поворот на 270 градусов влево - это 90 вправо. Имхо, знак (+ влево, - вправо) и значение [0,пи] куда информативнее. Ну и , если уж быть совсем дотошным, то Спойлер Return Values Type: Real An angle, in radians. The angle is measured from the X axis of the current construction plane, in radians, with angles increasing in the counterclockwise direction. If 3D points are supplied, they are projected onto the current construction plane нет упоминания о диапазоне, к которому принадлежит возвращается значение. Т.е. 270=630=-90 - все эти значения подходят под определение. И все они являются одинаковыми. Quote Link to comment Share on other sites More sharing options...
Maksim Yablokv Posted April 14 Author Report Share Posted April 14 33 минуты назад, EdwardSt сказал: Я просто не представляю приложения, где угол сам по себе является целевым показателем. Обычно он используется для дальнейшего определения тригонометрических функций (тут ноу проблем), либо для определения направлений (а вот тут возможны варианты). Мне как раз требовался второй вариант - определение азимута) ScreenRecorderProject137.mp4 1 Quote Link to comment Share on other sites More sharing options...
kpblc Posted April 15 Report Share Posted April 15 (edited) 20 часов назад, EdwardSt сказал: нет упоминания о диапазоне, к которому принадлежит возвращается значение. Т.е. 270=630=-90 - все эти значения подходят под определение. И все они являются одинаковыми. Я бы так не сказал: угол измеряется от 0х, против часовой стрелки, по достижении 2пи - начинается опять с 0. В принципе, кмк, логично. Edited April 15 by kpblc Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted April 15 Report Share Posted April 15 4 часа назад, kpblc сказал: В 14.04.2023 в 17:26, EdwardSt сказал: нет упоминания о диапазоне, к которому принадлежит возвращается значение. Т.е. 270=630=-90 - все эти значения подходят под определение. И все они являются одинаковыми. Я бы так не сказал: угол измеряется от 0х, против часовой стрелки, по достижении 2пи - начинается опять с 0. В принципе, кмк, логично. Зеленым - есть в справке. Красным - нет. Синим - обвязка предложения. Итого: С точки зрения математики возвращаемые значения в АС и NC оба верные. Сами возвращаемые значения - разные за счет приведения к разным диапазонам [0,2пи] и [-пи,+пи]. Оба разных значения подходят под описание функции, т.к. диапазон не упоминается. И где ж тут косяк? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.