Curve Project To Curve

Автор Тема: Curve Project To Curve  (Прочитано 7852 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Curve Project To Curve
« : 19-12-2019, 13:05:34 »
Как получить CurveC , являющийся проекцией CurveA на CurveB  по вектору XYZ dir (вектор, перпендикулярный CurveB)



Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curve Project To Curve
« Ответ #1 : 19-12-2019, 13:15:17 »
CurveA, CurveB и CurveC - это отрезки? И вообще нет понятия проекции на кривую, а есть понятие проекции на поверхность (в частности на плоскость).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Curve Project To Curve
« Ответ #2 : 19-12-2019, 13:19:46 »
CurveA, CurveB и CurveC - это отрезки?
да , есть начальная и конечные точки

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Curve Project To Curve
« Ответ #3 : 19-12-2019, 13:23:13 »
Так в чём проблема?

Используй метод Curve.Project для каждого конца отрезка.

Не забывай про граничный случай, когда отрезки перпендикулярны.

Если нужна только длина проекции, всё ещё проще - см. скалярное произведение векторов (DotProduct)

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Curve Project To Curve
« Ответ #4 : 19-12-2019, 13:24:14 »
И вообще нет понятия проекции на кривую, а есть понятие проекции на поверхность (в частности на плоскость).
я делаю отсылку к методу Curve.Project
https://www.revitapidocs.com/2018/b87fc3e4-ea25-2a75-5b5a-53065b099d2a.htm
"Projects the specified point on this curve."

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curve Project To Curve
« Ответ #5 : 19-12-2019, 13:24:52 »
да , есть начальная и конечные точки
Тогда это чистая аналитическая геометрия. Впрочем можно воспользоваться методами из Revit API.
Создаёшь две Line при помощи CreateUnbound указывая точки начала и вектор проекции и находишь их пересечения (метод Intersect) с CurveB
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Curve Project To Curve
« Ответ #6 : 19-12-2019, 13:25:25 »
Используй метод Curve.Project для каждого конца отрезка.
если проецировать по вектору то один конец Curve A не попадает на Curve B

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Curve Project To Curve
« Ответ #7 : 19-12-2019, 13:25:51 »
"Projects the specified point on this curve."

Проекция точки на кривую, а не кривой на кривую

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curve Project To Curve
« Ответ #8 : 19-12-2019, 13:26:11 »
я делаю отсылку к методу Curve.Project
https://www.revitapidocs.com/2018/b87fc3e4-ea25-2a75-5b5a-53065b099d2a.htm
"Projects the specified point on this curve."
Это проекция точки на кривую, а не кривой на кривую.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Curve Project To Curve
« Ответ #9 : 19-12-2019, 13:27:11 »
если проецировать по вектору то один конец Curve A не попадает на Curve B


сделай копию кривой CurveB неограниченной, спроецируй точки, дальше немножко простой логики, как её ограничить

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curve Project To Curve
« Ответ #10 : 19-12-2019, 13:27:27 »
если проецировать по вектору то один конец Curve A не попадает на Curve B
Сделай на основе CurveB бесконечный отрезок.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curve Project To Curve
« Ответ #11 : 19-12-2019, 13:28:20 »
Александр Игнатович,
Мыслим синхронно! :D
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Curve Project To Curve
« Ответ #12 : 19-12-2019, 13:30:58 »
o Curve.Project
Цитировать
XYZPoint is the nearest point on the curve;
Получается при проекции всегда находит ближайшую точку к линии. но мне нужно именно по вектору произвести такую проекцию. если я возьму точки концов CurveA то первая при проекции по вектору Dir попадет на CurveB а вторая нет (улетит условно в бесконечность)

Отмечено как Решение enot 19-12-2019, 15:00:05

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Curve Project To Curve
« Ответ #13 : 19-12-2019, 13:35:19 »
И тут внезапно оказывается, что ближайшая точка лежит на перпендикуляре.

Если сделаешь неограниченную прямую из копии отрезка CurveB - получишь то, что нужно. Для ограниченного отрезка вроде бы да, найдёт конец отрезка, если перпендикуляр лежит на прямой вне заданного отрезка

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Curve Project To Curve
« Ответ #14 : 19-12-2019, 13:36:49 »
o Curve.Project
Я же уже написал - используй Curve.Intersect
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение