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

KOllapsE

Пользователи
  • Публикаций

    201
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    4

Все публикации пользователя KOllapsE

  1. А они тоже используют rotate YAW, когда поворачиваются после перемещения? Если да, то мб надо использовать повороты как сейчас на стройке - то есть, объект перемещается, используя YAW, а потом поворачивается по старой системе, по какой-нибудь оси. Если нет, то мб и там надо использовать
  2. Ну, @3LoU_BaNaN теперь будет доволен, наверно - можно вытащить своё убежище откуда угодно и расположить как угодно). Да и возможности стройки расширились - можно создавать структуры с круглыми формами, причём довольно ровно и нетрудозатратно, можно быстро создавать симметрию в убежище. В общем, эта пять : D
  3. Сорь, я на алиедмод напрямую попасть не могу - блочит что-то, есть подозрение на провайдера, а мб много плагинов там накачал :D. Через онлайн прокси мне такой вид выдало Не видно, что слева. Я думал, он координаты той точки выдаст, три флоата, как положено :С Или я что-то не понял?
  4. Она же должна давать точку пересечения двух векторов... Типа такого, координаты этой точки
  5. @Electr0, обрати внимание, пожалуйста. Либо я что-то не так понял, либо угол неправильный. Там точно угол для вектора из точки А в точку Б?
  6. @Electr0 фишка в том, что дублируется АВ (два АВ получается). Потом одному из них изменяется градус. Полученный вектор и будет АС. Это просто повёрнутый АВ
  7. Что-то не соответствует полученный угол своему вектору. Если совместить начало TempVec:: -53.144775 -174.051757 -0.238098 с осью координат, то до его конца не будут такие углы fTempVecAng:: 0.074962 253.020523 0.000000. Если работать с двумя осями только (Z почти ноль в обоих случаях), то координаты Х относятся к У примерно как 1:3. Ну не может тогда угол по Х быть почти нулём.
  8. Я вот что подумал: а зачем вообще узнавать, где этот конец вектора АС? Мб можно по вектору АС на расстояние 181,984718 сразу перемещать второй объект? Если нельзя так, то ещё вариант: Есть вектор АВ - от первого объекта ко второму. Копируем его и оставляем как был (два вектора в одном, так сказать). Далее получаем вектор АС изменением углов одного вектора АВ на сколько нужно. Есть два вектора - АВ от первого объекта ко второму и АС - от первого объекта к точке, где должен оказаться второй. Вычитаем из АС вектор АВ функцией "Subtracts a vector from another vector". ВС = АС - АВ. После этого используем функцию "Calculates the dot product of two vectors" для векторов АС и ВС - получаем ту самую точку С, куда надо переместить второй объект!!!
  9. А можно скрин посмотреть, что вышло-то? По идее всё правильно ведь
  10. В том отрывке кода просто берут и указывают дистанцию (Float:distance = 50) Если можно из точки А 2696.005126 4924.954589 -976.147644 под углом fTempVecAng:: 0.074962 253.020523 90.00000 сделать дистанцию 181,984718, то это и будет точка С, куда потом второй объект перемещать
  11. Есть же выравнивание в стройке и оно работает (по X, Y, или Z)
  12. ну да, это и будет дистанция между А и В Надо, чтобы АС сохранил длину АВ для того, чтобы сохранилось расстояние между объектами, затем эта длина нужна. Ну или можно не считать длину, если есть возможность забабахать вектор такой же длины, просто с другим углом. Calculates a vector's length вроде подходит
  13. А потом оба объекта повернуть по той же оси, что и вектор АВ до этого и получится, что были повёрнуты два объекта с сохранением расстояния друг до друга и правильно повёрнутыми осями
  14. Берём fTempVec:: -53.144775 -174.051757 -0.23809. и считаем длину вектора АВ Берём fTempVecAng:: 0.074962 253.020523 0.000000 - как повёрнут сейчас АВ. Мы хотим повернуть на 90 градусов вверх (не вдупляю сейчас, по какой оси это будет, но чтобы подвижный конец карандаша повернулся вокруг неподвижного ровно вверх или вниз). Добавляем ему 90 градусов по Z (это же система координат карты, а не объекта, так что всё ок) После этого надо переместить вектор с длиной 181,9847189 и градусами 0.074962 253.020523 90.00000 так, чтобы он исходил из точки А. Его конец и будет точкой, куда надо переместить второй объект, чтобы второй объект повернулся относительно первого на 90 градусов
  15. @Electr0 я тот коммент менял три раза, мб потому непонятно : D
  16. Ты создашь вектор АС такой же длины, как и АВ, только уже повёрнутый куда надо (на 90 градусов) В точку С потом можно будет перемещать второй объект
  17. Создать повёрнутый вектор, например, fTempVecAng:: 0.074962 253.020523 90.000000 у которого будет длина такая же как у этого fTempVec:: -53.144775 -174.051757 -0.23809. КОРЕНЬ(53,144775^2+174,051757^2+0,238098^2)=181,9847189 Если всё ок, то так и можно поворачивать P.S. и поместить этот вектор ту да же, откуда первый был [FS] Позиция: 2696.005126 4924.954589 -976.147644
  18. @Electr0, а можно использовать "Returns angles from a vector" отсюда https://sm.alliedmods.net/new-api/vector , затем добавлять нужный градус в полученные значения, а затем создавать новый вектор с новыми углами? Ну или старому углы поменять
  19. @Electr0, слушай, а в саурспауне, или на чём будет там код писаться, есть операции с векторами (векторное вычитание хотя бы)? Я тут пробую математически описать поворот по координатам, векторные операции упростили бы всё.
  20. Ну, можно ли сделать так: вот есть у нас вектор и ему присобачиваем собственные оси, как у предметов Если можно, то потом его как объект можно будет поворачивать и всё будет правильно. Главное, чтобы эти оси исходили из точки А и были параллельны соответствующим осям координат карты
  21. Пусть поворачиваются вокруг точки первого предмета (можно узнавать наименьший вектор до отправных точек для каждого объекта, пусть будет первым), Можно даже сымитировать новую систему координат - брать координаты точки первого объекта, допустим (100; 150; 300), а потом, при дальнейших поворотах, если использовать координаты, везде вычитать 100 с Х, 150 с Y и 300 c Z.
  22. @Electr0 ну так всё же уже есть, попробуй создать отрезок со своими осями только. А насчёт " Если же движение не из центра, как в случае если мы взяли в руки карандаш за один конец и повернули его в пространстве " - пункт в строительстве "Повернуть по часовой" обыгрывает это, я заметил, как бы ни были расположены оси объекта, он всегда поворачивает зелёную ось к красной с сохранением положения синей, то есть происходит поворот вокруг Z.
  23. Нет, с созданием новой системы координат я погорячился. Надо при создании вектора АВ добавлять в одну из точек (А, например) три оси, как у объектов. Т.е., АВ станет как бы объектом. После этого и так всё правильно будет - АВ будет поворачиваться относительно неподвижного конца карандаша.
  24. У каждого объекта же есть свои координаты, я так понимаю, что это точка, где три оси объекта пересекаются. Пусть они и будут отправными точками. Допустим, имеем карандаш (красный объект) и другой предмет (жёлтый объект). Создадим новую систему координат и совместим её начало с неподвижным концом карандаша (или можно переместить все объекты, сохраняя относительное положение, к началу координат карты). После этого создадим отрезок из точки первого объекта к точке второго - АВ. Повернём его по уже существующей системе на -45 градусов вокруг Z (или 45 ПО оси Y, как это в стройке сейчас называется) Затем переместим точку второго объекта в точку В (в системе стройки уже существует выравнивание, по ходу его и можно использовать) Затем повернём оба объекта на тот же градус и по той же оси, что и АВ до этого Всё это уже есть в системе стройки, надо только создавать новую систему координат, а потом удалять её, либо перемещать объекты к началу координат карты, сохраняя положение друг относительно друга, либо поворачивать объекты в системе координат первого объекта.
×
×
  • Создать...