Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Рассадка одного объекта на вершины другого объекта
delete $*_Clone_* -- Для повторного выполнения скрипта предварительно удаляются предыдущие объекты _______________________________________________________________ Рассчитывается угол между объектами (повёрнут ли один объект в сторону другого) ( _______________________________________________________________ Поворачиваем объект с помощью кватерниона $.rotation =(quat <X> <Y> <Z> <угол вращения>) -- X,Y,Z - координаты вектора вокруг которого будет происходить вращение Пример: RotAxis = polyop.getFaceNormal $ 1 -- нормаль выбранного полигона $.rotation =(quat RotAxis[1] RotAxis[2] RotAxis[3] (acos (dot Vector1 Vector2))) -- (acos (dot Vector1 Vector2) угол (или арккосинус) между двумя единичными (нормализованными) вектроами, значение в градусах.
_______________________________________________________________ Матрицы трансформаций t1 = $Teapot001 t2 = Teapot() t2.pos = [0,0,50] -- t2 двигается на 50 по оси Z в глобальных координатах t2.transform *= t1.transform -- устанавливаем положение и ориентацию t2 к t1 _______________________________________________________________ $.transform = rotateXmatrix <int (угол в градусах)> -- поворот матрицы на угол $.transform = rotateYmatrix <int (угол в градусах)> -- поворот матрицы на угол $.transform = rotateZmatrix <int (угол в градусах)> -- поворот матрицы на угол $.dir -- вектор локальной оси z $.transform = rotateY $.transform 45 -- поворачивает матрицу относительно начала коорд. $.transform = rotateYmatrix 45 * $.transform -- локальный поворот _______________________________________________________________ $.transform -- матрица трансформации $.transform = matrix3 1 -- единичная матрица (начального положения объекта) $.transform.scalepart -- только просмотр части масштаба от матрицы трансформации $.transform.rotationpart -- только просмотр части поворота матрицы трансформации $.transform.translationpart -- только просмотр части перемещения матрицы трансформации _______________________________________________________________ $.transform.row4 = [0,0,0] -- на прямую Row4 (строка матрицы) не меняется (результата не будет) -- отдельные трансфортмации матриц трансформации меняются через переменную tmpTr = $.transform tmpTr.Row4 = [110,0,0] $.transform = tmpTr _______________________________________________________________ SelEdge = polyop.getEdgeSelection $ as array -- массив выделенных рёбер polyop.getVertsUsingEdge $ SelEdge as array -- Массив использованных рёбрами вершин _______________________________________________________________ -- Проверка на принадлежность двух элементов массива элементам другого массива (код проверяте, принадлежит ли пара выделенных рёбер отверстию в геометрии) compare = false arrOpenEdges = (polyop.getOpenEdges $) as array -- массив рёбер, принадлежащих дыре в геометрии SelEdges = (polyop.getEdgeSelection $) as array -- массив выделенных рёбер
for i=1 to arrOpenEdges.count do -- от 1 до конца рёбер из числа открытых делать if SelEdges[1] == arrOpenEdges[i] then -- Если одно ребро из выделенных есть среди открытых рёбер (рёбер дыры) тогда for j=1 to arrOpenEdges.count do -- от 1 до конца рёбер из числа открытых делать if SelEdges[2] == arrOpenEdges[j] then (-- Если второе выделенное ребро есть среди рёбер из числа открытых тогда compare = true -- переменная станет true exit -- выход из цикла ) compare -- возвращается результат после выполнения блока или функции для дальнейшей его обработки если это требуется. То есть вместо “OK”, после вычисления блока будет возвращено значение переменной.
_______________________________________________________________
|
||||||
Последнее изменение этой страницы: 2021-04-13; просмотров: 43; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.64.47 (0.011 с.) |