Параллельность элементов

Автор Тема: Параллельность элементов  (Прочитано 3795 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Есть ли метод апи, позволяющий проверить параллельность двух элементов (например труб)?

Отмечено как Решение enot 26-03-2019, 21:59:45

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Параллельность элементов
« Ответ #1 : 26-03-2019, 21:42:13 »
1. Получить Element.Location as LocationCurve, если результат null - значит элемент не на основе линии
2. locationCurve.Curve as Line, если результат null - значит элемент не прямой
3. cuve1.Direction.CrossProduct(curve2.Direction).IsAlmostEqualTo(XYZ.Zero) - если выполняется, значит паралелльны

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Параллельность элементов
« Ответ #2 : 26-03-2019, 21:59:39 »
cuve1.Direction.CrossProduct(curve2.Direction).IsAlmostEqualTo(XYZ.Zero)
Векторное произведение коллениарных векторов равно нулю :)
Супер,  благодарю!

еще попробовал так,
 
Код - C# [Выбрать]
  1.  bool isParallel =(Pipe1.Location as LocationCurve).Curve as Line).Direction.IsAlmostEqualTo((Pipe1.Location as LocationCurve).Curve as Line).Direction)
вроде, результат тот же.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Параллельность элементов
« Ответ #3 : 26-03-2019, 22:07:13 »
bool isParallel =(Pipe1.Location as LocationCurve).Curve as Line).Direction.IsAlmostEqualTo((Pipe1.Location as LocationCurve).Curve as Line).Direction)

Так не будет работать в случае противоположно направленных векторов. Ну и, кстати, nullreference exception никто не отменял

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Параллельность элементов
« Ответ #4 : 26-03-2019, 22:11:16 »
Так не будет работать в случае противоположно направленных векторов
О, как...

nullreference exception
если у меня все элементы трубы - то в любом случае получим LocationCurve или вы не об этом

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Параллельность элементов
« Ответ #5 : 26-03-2019, 22:27:38 »
О, как...

Ну как бы да, потому и векторное произведение.

если у меня все элементы трубы
Ну если так ограниченно, тогда норм

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Параллельность элементов
« Ответ #6 : 26-03-2019, 23:05:52 »
А можно ли аналогично проверить на перпендикулярность?
Или для этого уже нужно использовать, например скалярное произведение двух векторов, которое должно быть равно нулю?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Параллельность элементов
« Ответ #7 : 26-03-2019, 23:55:29 »
скалярное произведение двух векторов, которое должно быть равно нулю?

в точку!