Jump to content

Recommended Posts

Всем привет!

 

Обнаружил, что функция 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
     )
   )

Link to comment
Share on other sites

Эта тема обсуждалась в 

 

Строго говоря, отрицательное значение угла ошибкой не является.

В некоторых приложениях представление в диапозоне -пи,+пи является более наглядным , чем 0, 2пи.

Не совсем понятно, каким боком это относится к совместимости. Оба значения правильные. 

 

23 минуты назад, kpblc сказал:

Думаю, корни этой проблемы там же, где и корни для

Все же это разные проблемы. Точнее, отрицательное значение представляет собой другую (но тоже верную!) реализацию функции (angle, т.е. проблемой по сути не является.

А неверное определение угла функцией (getangle) при изменении точки обзора - это явный косяк.

Link to comment
Share on other sites

М-да, плохо писать с телефона :( Но вроде где-то на форуме подобная тема поднималась, кажется:

 

Link to comment
Share on other sites

Спасибо за ссылку, что данная тема уже поднималась.

Извиняюсь за флуд. Плохо искал.

 

1 час назад, EdwardSt сказал:

Не совсем понятно, каким боком это относится к совместимости. Оба значения правильные.

Что тут не понятного?

Лично мне нужно, чтобы функция возвращала одинаковые значения, т.к. код будет работать на обоих платформах и в AC и в NC.

Link to comment
Share on other sites

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  - все эти значения подходят под определение.

И все они являются одинаковыми.

Link to comment
Share on other sites

33 минуты назад, EdwardSt сказал:

Я просто не представляю приложения, где угол сам по себе является целевым показателем. Обычно он используется для дальнейшего определения тригонометрических функций (тут ноу проблем), либо для определения направлений (а вот тут возможны варианты).

Мне как раз требовался второй вариант - определение азимута)

  • Like 1
Link to comment
Share on other sites

20 часов назад, EdwardSt сказал:

нет упоминания о диапазоне, к которому принадлежит возвращается значение. 

Т.е. 270=630=-90  - все эти значения подходят под определение.

И все они являются одинаковыми.

Я бы так не сказал: угол измеряется от 0х, против часовой стрелки, по достижении 2пи - начинается опять с 0. В принципе, кмк, логично.

Edited by kpblc
Link to comment
Share on other sites

4 часа назад, kpblc сказал:
В 14.04.2023 в 17:26, EdwardSt сказал:

image.png.3a00001b0973b9f996d1a6b7af8486b4.png

нет упоминания о диапазоне, к которому принадлежит возвращается значение. 

Т.е. 270=630=-90  - все эти значения подходят под определение.

И все они являются одинаковыми.

Я бы так не сказал: угол измеряется от 0х, против часовой стрелки, по достижении 2пи - начинается опять с 0. В принципе, кмк, логично.

 

Зеленым - есть в справке.

Красным - нет.

Синим - обвязка предложения.

 

Итого:

С точки зрения математики возвращаемые значения в АС и NC оба верные.

Сами возвращаемые значения - разные за счет приведения к разным диапазонам [0,2пи] и [-пи,+пи].

Оба разных значения подходят под описание функции, т.к. диапазон не упоминается.

И где ж тут косяк?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!
×
×
  • Create New...