Перейти к публикации

Построения кривой по уравнению. Проблемы и решения.


Рекомендованные сообщения

Уважаемые знатоки! Добрый день.

Столкнулся с проблемой. Сам справиться не могу. Прошу помощи.

Суть проблемы:
1. Есть два сплайна заданных параметрическими уравнениями. По законам математики концы сплайнов должны быть касательными к вертикальной прямой. В принципе, без увеличения изображения, визуально кажется, что так оно и есть, но при увеличении обнаруживаются непонятные загогулины. Собственно помощь нужна в понимании откуда берутся эти загогулины и как от них избавиться.
Цель создания таких сплайнов - обеспечить движение "ролика" по кривой, образованной этими сплайнами и отрезком касательной прямой, соединяющей их (сплайны). Естественно, пока присутствуют загогулины ролик не может двигаться по таким траекториям т.к. радиус ролика больше, чем радиусы загогулин.

2. Как добиться строгого сохранения заданных параметрически сплайнов при выполнении команды "Сплайн - Разместить". Малейшее изменение радиусов приведет к недопустимому изменению траектории движения роликов.

 

В архиве исходный файл (V. 2014)/

Заранее благодарю откликнувшихся!

Сплайны загогулины.rar

post-43315-0-22014500-1401525452_thumb.jpg

post-43315-0-50256400-1401525462_thumb.jpg

post-43315-0-40466200-1401525507_thumb.jpg

post-43315-0-96788000-1401525514_thumb.jpg

post-43315-0-63169000-1401525529_thumb.jpg

post-43315-0-16635200-1401525549_thumb.jpg

Ссылка на сообщение
Поделиться на других сайтах


@@starij59, отличный вопрос и отлично задан.
 
Если немного продолжить Ваши кривые, то увидим, что t=1 для обоих кривых -- точка разрыва кривизны (в этой точке существует сразу две производных, смотря с какой стороны подходить к этой точке).
16ea71708553d848119bdaa033f4d133.png9c573a2e328e7690dceb78d5a5a267c0.png
 
Похоже, что солид, вычисляя график функции, строит не просто точки, затем соединяя их сплайном, но и в каждой точке вычисляет производную для задания касательной сплайна. В данном случае это вышло ему боком, т.к. по причинам неведомым в точке t=1 он выбрал второе, "неверное" значение производной. Отсюда и эти "загогулины". Кстати, построить эти кривые для значений t от 0 до, скажем, 2 тоже не получится -- SW в панике от негладких кривых)
И традиционно солид не предоставляет никаких методов контроля за количеством точек в кривой / степенью соединяющего полинома. Ведь нужно добавлять что-то новое в SW2025..
 
Метод решения -- рассчитать достаточное кол-во точек кривой в мат. пакете или экселе, а затем импортировать в солид как кривую по точкам. Ниже сравнение методов: слева кривая по уравнению, справа -- по импортированным точкам. Файл SW2013.
 
971abf59a3628b494de3858fa7b90a9a.png

615d77ce98bc157a13bc88c98a21660c.png783d24ef8a4366f77ddbd9b3116c3042.png

Ссылка на сообщение
Поделиться на других сайтах
Метод решения -- рассчитать достаточное кол-во точек кривой в мат. пакете или экселе

Есть другой способ: отредактировать исходное уравнение так, чтобы подобных проблем не было.

Ссылка на сообщение
Поделиться на других сайтах

Есть другой способ: отредактировать исходное уравнение так, чтобы подобных проблем не было.

Можно подробнее? И применительно к данному случаю.

Ссылка на сообщение
Поделиться на других сайтах
Можно подробнее? И применительно к данному случаю.

Чего подробнее? Написать сразу новую формулу? Так это работа автора темы, а не моя.

Я не знаю что там за формула. Я не знаю откуда она получена - из светлой головы автора или из результатов расчёта какой-то программы. Я не знаю каково назначение этой кривой.

Вот главные подробности, за которыми надо обращаться не ко мне, а к автору.

Изменить формулу - это математика. Как её изменить - это пусть автор решает сам. Или он в своей светлой голове что-то подправит, или подправит расчётную программу или ещё чего.

А может, просто заменит эти кривулины параболами или дугами.
Это не моя конструкция, не моя идея. Это всё на совести автора.

Ссылка на сообщение
Поделиться на других сайтах
Можно подробнее?

Нельзя, это очередной "лишь бы ляпнуть" пост. Пора бы уже привыкнуть. 

Ссылка на сообщение
Поделиться на других сайтах

И для самых умных, которые ничего просто так не ляпают, а всегда говорят исключительно по делу. И всегда дают обалденные советы.

Я не даю готовых решений. Я даю идею как решить проблему.

Использовать эту идею или нет - это пусть решает тот, кто в этом заинтересован.

Ссылка на сообщение
Поделиться на других сайтах

@@starij59, отличный вопрос и отлично задан.

 

Если немного продолжить Ваши кривые, то увидим, что t=1 для обоих кривых -- точка разрыва кривизны (в этой точке существует сразу две производных, смотря с какой стороны подходить к этой точке).

 

Похоже, что солид, вычисляя график функции, строит не просто точки, затем соединяя их сплайном, но и в каждой точке вычисляет производную для задания касательной сплайна. В данном случае это вышло ему боком, т.к. по причинам неведомым в точке t=1 он выбрал второе, "неверное" значение производной. Отсюда и эти "загогулины". Кстати, построить эти кривые для значений t от 0 до, скажем, 2 тоже не получится -- SW в панике от негладких кривых)

И традиционно солид не предоставляет никаких методов контроля за количеством точек в кривой / степенью соединяющего полинома. Ведь нужно добавлять что-то новое в SW2025..

 

 

Насколько я знаю, то полиномы Солид строит обычным методом Лангранжа, просто в конечных точках ему нужно указать прямую, касательность к которой он будет соблюдать. К сожалению, вручную при постройке сплайна, как было замечено, этого нельзя указать.

Попробуйте дополнить эскиз справочными линиями из начальной и конечной точек сплайна под нужным углом и задайте касательность в связях, проконтролируйте возможные отклонения сплайна и в этом случае. Обратите внимание на то, чтобы линии строились именно из конечных точек, а не из пространства в точки.

Ссылка на сообщение
Поделиться на других сайтах

Огромное всем спасибо за отклик.

Будем пробовать, следуя Вашим советам и рекомендациям. Хочу с Вашего позволения оставить за собой право вернуться к обсуждению, если не получу положительного результата.

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

 

Задача усложняется еще и тем, что по заданной кривой должны одновременно двигаться 2 ролика...

Если интересно, то в результате должно получиться движение 2-х роликов по одной траектории см. файл (упрощенно).

Форум.zip

Ссылка на сообщение
Поделиться на других сайтах

Прикрепленные файлы

Увы, не у всех тут SW2014. Так что лучше в нейтральном формате и/или картинки)

Расскажите подробнее про задачу, как определялось движение роликов. Может, возможно сразу задать это движение и получить в моушене нужную траекторию с заданной точностью.

 

 

Есть другой способ: отредактировать исходное уравнение так, чтобы подобных проблем не было.

С уравнением тут все в порядке. Не в порядке только способ, каким солид строит кривую по этому уравнению.

 

Кстати, интересно, как Крео или NX построят такую кривую.

Иногда мне кажется, что DS дает разнарядку в подразделение, занимающееся SW: "Так, этот функционал не развивайте. Сюда засуньте пару багов. И сюда один. Чтобы клиент помнил, что сила -- она в Катии, брат!"

Ссылка на сообщение
Поделиться на других сайтах
С уравнением тут все в порядке.

 

Автор совета не в курсе, что такое бывает. И что уравнения есть выведенные, а не из гугла. И что математика может быть абсолютно верной, а ошибки в программе явные. И что раздел про моделирование. 

Ссылка на сообщение
Поделиться на других сайтах
Кстати, интересно, как Крео или NX построят такую кривую.

Напиши уравнения, запихну их в Крео.

У NX функционал работы с математикой посильнее. Это обсуждалось на примере построения профиля NACA по уравнению.

Ссылка на сообщение
Поделиться на других сайтах

Напиши уравнения, запихну их в Крео.

x(t) := -(110+sqrt(abs(1-t*t)*1600))*cos(pi*t/3)

y(t) := (110+sqrt(abs(1-t*t)*1600))*sin(pi*t/3)

0 <= t <= 1

 

Опционально: 0 <= t <= 1.08

 

С отображением кривизны, если можно.

Ссылка на сообщение
Поделиться на других сайтах

 

Напиши уравнения, запихну их в Крео.

x(t) := -(110+sqrt(abs(1-t*t)*1600))*cos(pi*t/3)

y(t) := (110+sqrt(abs(1-t*t)*1600))*sin(pi*t/3)

0 <= t <= 1

 

Опционально: 0 <= t <= 1.08

 

С отображением кривизны, если можно.

 

Крео не хочет использовать в уравнении функцию abs (хотя такая функция в Крео есть).

Честно говоря, я тоже не вижу смысла её использовать в заданном интервале.

Результат без abs с анализом кривизны на картинке.

В интервале до 1,08 Крео отказался строить кривую - пишет возможна ошибка в вычислении.

 

Пропорции несколько отличаются от картинок из Солида.

post-3189-0-79952600-1401708830_thumb.png

Ссылка на сообщение
Поделиться на других сайтах

Не понял как теперь прицепить свою картинку. Предлагает ввести ссылку. Что за фигня?

Ага. Все забыл.....Надо не иконку жать, а внизу "прикрепить файлы".

Ссылка на сообщение
Поделиться на других сайтах

 

Не понял как теперь прицепить свою картинку. Предлагает ввести ссылку. Что за фигня?

Ага. Все забыл.....Надо не иконку жать, а внизу "прикрепить файлы".

 

У меня это было за пределами экрана :)

Почему вверху нет этих кнопок?

Ссылка на сообщение
Поделиться на других сайтах

Крео не хочет использовать в уравнении функцию abs (хотя такая функция в Крео есть).

 

Неа, без abs не тот фасон. Не тот стиль. Другой жанр.

Без abs и солидворкс на ура справляется.

Нет, не справляется. Только от 0 до 0,9999...

 

Речь сейчас об идеологии построений по уравнениям, а не "как ТС решить его задачу".

Похоже, что Крео сразу понимает, что кривая уж больно кривая. А солид думает: "А, справлюсь!", а потом выдает лажу)

 

Пропорции несколько отличаются от картинок из Солида.

 

Видимо, потому, что это совсем уже другая функция))

Ссылка на сообщение
Поделиться на других сайтах
Неа, без abs не тот фасон. Не тот стиль. Другой жанр.

Может, я уже забыл математику, но, на сколько я помню, для ВЕЩЕСТВЕННОГО положительного числа его абсолютное значение равно самому этому числу. А в диапазоне 0-1 это число остаётся положительным. Вроде, комплексных чисел здесь не появляется.

Так что фасон в данном случае не меняется.

Ссылка на сообщение
Поделиться на других сайтах
Так что фасон в данном случае не меняется.

 

 

Речь сейчас об идеологии построений по уравнениям, а не "как ТС решить его задачу".

 

И осталось выяснить "почему пропорции другие получились". Может, множитель какой забыли по одной из осей? Или уравнение для профиля НАСА по-привычке ввели?

 

Если можно, вытяните поверхность по этой кривой и выложите в нейтральном формате.

Ссылка на сообщение
Поделиться на других сайтах

И осталось выяснить "почему пропорции другие получились".

 

Выяснил. Градусы-радианы.

Вот откорректированный вариант. Зигзаги на графике кривизны - это так Крео строит линию по уравнению. Подобное было и на наковском профиле. Возможностей как-то повлиять на это (как в NX) нету, к сожалению.

Диапазон до 1.08

А вот это в диапазоне до 1.

post-3189-0-39669300-1401710799_thumb.png

post-3189-0-83274800-1401710937_thumb.png

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...