![]() |
Обратная кинематика. Правильные формулы?
значить с сайта http://roboty6.narod.ru/inverseKinematics.htm
достал формулы и попытался закодировать. Не работают как надо, я их вроде не менял, значит я что то не понял или формулы под сомнением ? Вот! Код:
Include "Xors3d.bb" |
Ответ: Обратная кинематика. Правильные формулы?
Function sqrt#(x)
x=x*x Return x End Function вообще судя по названию там корень должен считаться, а у тебя возводится в квадрат. Так что вполне может быть, что все косяки из-за этой ф-ции. |
Ответ: Обратная кинематика. Правильные формулы?
в блице есть же корень, только называется sqr.
если не втыкаешь почему формулы именно такие как написаны, то ничего не выйдет с тупого их списывания. надо теоретически понимать алгоритм. мне кажется сайт неподходящий. там нифига непонятно что написано. ищи инфу для разработчиков игр, а не роботостроителей. -- вот самая понятная дока, которую я нашёл: http://www.darwin3d.com/gamedev/articles/col0998.pdf |
Ответ: Обратная кинематика. Правильные формулы?
Mr_F_,dsd, да знаю я что такое sqrt и sqr. В блице корень sqr, а квадрата нет, вот я и сделал чтоб не мучится, ну и назвал так. Кажется где то видел что в си принято такое обозначение. Если ошибся, ну так тогда как обозначить? Одно ясно под sqrt я подразумеваю квадрат и в формулах где я его использую тоже квадрат. Здесь что то в этих формулах не то кажется.
|
Ответ: Обратная кинематика. Правильные формулы?
Цитата:
|
Ответ: Обратная кинематика. Правильные формулы?
А что не так с кинематикой? Есть система стержней соединенных шарнирами. Есть её текущее положение. Есть точка куда должен уткнуться конец системы.
Конец последнего стержня может перемещаться по поверхности сферы с центром на шарнире и радиусом в длину стержня. Если координаты цели есть решение уравнения сферы, значит последний элемент можно повернуть относительно его шарнира связующего его с родителем и цель достигнута. Если нет. Смотрим на пересечение сферы родителя со сферой радиусом в длину последнего стержня вокруг точки цели. Если есть пересечение то можно поставить в ближайшую точку от текущего положения родителя и уткнуть последний стержень в цель. Если пересечений нет, то проверяем сферу досягаемости родителя уровнем выше и сферу вокруг цели радиусом в сумму длины последнего и предпоследнего стержня. И т.д. Если предки кончились, а точка так и не достигнута, то тупо прицеливаем усе стержни в цель. Как то так :) |
Ответ: Обратная кинематика. Правильные формулы?
dsd, я попытался понять. Не буду врать, не уверен что всё что ты сказал мне понятно.) Ты сейчас говоришь о статье которую Mr_F предложил?
|
Ответ: Обратная кинематика. Правильные формулы?
Нет, я говорю о термехе и геометрии в пространстве.
|
Ответ: Обратная кинематика. Правильные формулы?
dsd, возможно в закодированном виде было бы понятнее))
|
Ответ: Обратная кинематика. Правильные формулы?
[|xqѪTѤzѤyqѤt~ѤѤ~|yqxt|~z}ѻѤQѤ|qxtѤqryq}Ѥzqp|yqyyѤt y|tx|ѪѤQѤqѤq~
qqѤ{zzrqy|qѪѤQѤz~tѤ~ptѤpzrqyѤ~yѤ~zyqѤ|qxѪщщ^zyqѤ {zqpyqwzѤqryѤxzrqѤ{qqxq tѤ{zѤ{zvqyz|ѤqѤѤqyzxѤytѤty|qѤ|Ѥtp|zxѤvѤp|yѤqryѪѤQ |Ѥ~zzp|ytѤq|ѤqѤqqy|qѤtvyqy|ѤqѨѤsyt|Ѥ{zqpy|}Ѥ qxqyѤxzryzѤ{zvqyѤzyz|qyzѤqwzѤty|tѤvs qwzѤqwzѤѤzp|qqxѤ|ѤqѤpz|wytѪщщQ|ѤyqѪѤexz|xѤytѤ{q qqqy|qѤqѤzp|qѤzѤqz}Ѥtp|zxѤvѤp|yѤ{zqpyqwzѤqryѤvz ~wѤz~|Ѥq|ѪѤQ|ѤqѤ{qqqqy|qѤzѤxzryzѤ{ztv|ѤvѤu|r t} Ѥz~ѤzѤq~ qwzѤ{zzrqy|Ѥzp|qѤ|Ѥ~yѤ{zqpy|}ѤqrqyѤvѤqѪщщQ|Ѥ{ qqqqy|}ѤyqѨѤzѤ{zvqqxѤqѤpzwtqxz|Ѥzp|qѤzvyqxѤvqѤ|Ѥq Ѥvz~wѤq|Ѥtp|zxѤvѤxxѤp|yѤ{zqpyqwzѤ|Ѥ{qp{zqpyqwz ѤqryѪѤ\ѤѪpѪщщQ|Ѥ{qp~|Ѥ~zy||ѨѤtѤz~tѤt~Ѥ|ѤyqѤpz|wy tѨѤzѤ{zѤ{|q|vtqxѤqѤqry|ѤvѤqѪѤ^t~ѤzѤt~ Вааще там самое сложное это найти нужную точку пересечения двух сфер. Када сферы пересекаюца или касаюца? Когда расстояние между центрами меньше равно суммы радиусов. Какова нормаль плоскости по которой пересекаются две сферы? Совпадает с линией проходящей через их центры. Где точка на линии соединяющей центры сфер принадлежащая плоскости сечения? Отмеряем от центра первой радиус второй. Находим разницу между радиусами. Прибавляем ко второму радиусу разницу умноженную на соотношение радиусов. Каков радиус окружности на этой плоскости? Расстояние от центра до точки сечения это косинус угла на радиус. => синус на радиус = радиус окружности на плоскости. Дальше ищем пересечение прямой по которой стержень лежит с плоскостью сечения. Получается точка. Считаем вектор от этой точки до центра окружности. делим его на его длину и умножаем на его длину минус радиус окружности. Получилась нужная точка куда воткнуть текущий стержень. Считаем вектор от шарнира до этой точки. xAlignEntityToVector(). Про точку места сечения может и наврал :) |
Ответ: Обратная кинематика. Правильные формулы?
dsd, псиб терь все понятно. Да еще, закодированный вид я подразумевал код языка программирования, если ты не понял. :)
|
Ответ: Обратная кинематика. Правильные формулы?
Вообщем, глупые формулы! Нашел рабочие и реализовал. а эти в топку.
|
Ответ: Обратная кинематика. Правильные формулы?
код в студию)
|
Ответ: Обратная кинематика. Правильные формулы?
Иш ты налетели)) Как помоч так нету, а как код так они тут уже))
Лан, вам какой с вычислением точки или с углами? |
Ответ: Обратная кинематика. Правильные формулы?
у меня был пример вычисления на углах, я еще на блитц.пп выкладывал, но после полета диска демка исчезла.
Давай с вычислением углов. |
Часовой пояс GMT +4, время: 22:45. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot