|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
20.11.2009, 18:38 | #1 | |
Тригонометрические функции и векторная алгебра
Руководитель фирмы
Москва
Регистрация: 28.03.2007
Сообщений: 1,831
|
||
Просмотров: 42515
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Так покрасивше будет
Код:
Код:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 14.06.2015 в 12:18. |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Делаем L=1 и пересчитываем ту точку, от которой делали отсчет в 0,0,0.
чтоб получить единичный вектор, достаточно разделить каждую координату на длинну этого вектроа, ненадо ничего никуда переносить >>Функцию можно назвать points-vector. вообщето это называется - нормализация Почитайте чтонибудь по геометрии, например http://algolist.ru/maths/geom/index.php, подобных вопросов возникать не будет |
|||
|
||||
zamtmn,
"Чукча не читатель, Чукча - писатель!" Цитата:
Видишь, я функции граблями пишу, а люди (VVA) - душою. Или у тебя тоже грабли? |
||||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Честно говоря прочитал через строку - если нужна функция получения единичного вектора - "моя бибилиотечная":
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
О! Укуси меня пчела!
Ну, наверное надо тему переименовать в "Тригонометрические функции" Мне еще надо превращать единичный вектор оси Z объекта, который 210 парой показывается в: 1: Его атипод (-Z) 2: Вектор абсцисс (Х) 3: Антипод абсцисс (-Х) 4: Вектор ординат (Y) 5: Антипод ординат (-Y) Вот в MTEXT-е 11 пара - вектор абсцисс объекта MTEXT. А в других объектах его нет, надо вычислять. Нужна функция, которая по начальной точке, вектору и длинне дает координаты точки. Нужны еще несколько функций и в Автокаде можно будет крутить-вертеть все, что угодно. Дима_, только надо pt1 и pt2 местами поменять. первая точка должна быть "из", а вторая "в", а не наоборот. Последний раз редактировалось Supermax, 22.11.2009 в 13:02. |
||||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Возможно - я его писал когда нужно было смоделировать плоскую модель тела при просмотре с некого вектора - видимо поэтому и получилось "наоборот" - это просто с какой стороны смотреть.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Ну, наверное надо тему переименовать в "Тригонометрические функции"
тригонометрия - sin, cos и т.д., такчто переименовать лучше чтоб в названии векторная алгебра фигурировала >>Или у тебя тоже грабли? к сожалению на лиспе ни граблями ни чем другим не умею)) >>Вот в MTEXT-е 11 пара - вектор абсцисс объекта MTEXT. А в других объектах его нет, надо вычислять. в других объектах есть угол поворота, вычисление 0x в этом случае описано в разделе arbitrary axis algorithm DXF Reference |
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Чую и синусы понадобятся.
Понадобятся только чтоб перейти от угла к вектору или создать матрицу поворота. >>А про песчет векторов с учетом угла поворота - ссылочку плииз! ссылочки нету, но если нужно получить 0x из угла поворота(u): 0x=(cos(u),sin(u),0) это если 0z=0,0,1 если нет, сначала нужно получить 0x используя arbitrary axis algorithm, потом повернуть его на угол u вокруг 0z >>В MTEXT и угол поворота есть и х-вектор и z-вектор. А нужны все, и не для коллекции. насколько помню, в MTEXT - угол поворота и ox - одно и тоже если есть 0x,0z, то 0y - векторное произведение 0x и 0z (нужно промнить что векторное произведение зависит от мерестановки мест, какая последовательность 0x*0z или 0z*0x я не помню) >>Нужны еще несколько функций и в Автокаде можно будет крутить-вертеть все, что угодно. чтобы крутить всё что угодно нужно: векторное произведение скалярное произведение умножение вектора на матрицу умножение матрицы на матрицу создание матрицы поворота вокруг 0x создание матрицы поворота вокруг 0y создание матрицы поворота вокруг 0z создание матрицы поворота вокруг произвольного вектора лисп насколько понимаю - очень неудобный для этого язык Последний раз редактировалось zamtmn, 22.11.2009 в 19:26. |
|||
|
||||
Ну зачем так сложно? В Автокаде все уже почти есть.
Воспользуемся услужливо нам даденным MTEXT-ом. Создаем временный объект с точкой вставки 0,0,0 и задаем ему угол поворота и вектор, получаем из 11 пары вектор Х. Крутим вокруг него на 90 гр. и получаем Y. антиподы делаются простой сменой знаков. |
||||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Ну зачем так сложно? В Автокаде все уже почти есть.
>>Воспользуемся услужливо нам даденным MTEXT-ом. Ну я бы не сказал что создать объект проще чем сделать несколько векторных произведений, такой подход с добру не приведет |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,850
|
не очень понимаю, чем trans не угодил? Или это вообще не в теме?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Ну, типа, дан единичный вектор Z и угол поворота вокруг него. Надо найти координату оси Х и т.д.
Ясно дело, если угол = 0, то Х= (1,0,0), а если не нулю? Кулик Алексей aka kpblc , не, не угодил. Он переводит пользовательские координаты в мировые и обратно, ну еще экранные. А тут речь идет о том, в какую сторону откладывать расстояние, если тебе дана не та ось, что тебе надо. Вот сделай MTEXT, поверни его в нескольких плоскостях и попробуй сделать вокруг него рамку. И GetBoundingBox тебе не поможет. |
||||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
могу дать расчет системы координат вставки блока на паскале, там есть и нормаль и поворот, но используется матричное вычисление и векторное произведение, в лиспе это можно заюзать?
>>Ясно дело, если угол = 0, то Х= (1,0,0), а если не нулю? нет, 0x зависит не только от угла но и от нормали (группа 210 помоему) |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,850
|
Можно, конечно Векторное произведение я как-то делал (да и так, если порыскать, думаю, найти можно). А преобразование координат можно выполнять либо через trans, либо через TransformationMatrix (кажется, так).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рифмоплетство. | Kryaker | Разное | 554 | 14.11.2023 11:59 |
Определение высот рельефа по близлежащим точкам | dextron3 | Программирование | 21 | 10.11.2011 13:14 |
Интерполяция между двумя точками | postbudka | Программирование | 27 | 21.05.2009 10:00 |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |
Координаты точки, лежащей на полилинии | Al_Taron | Программирование | 1 | 27.11.2006 09:45 |