Привязка углового соединения для ограничения при повороте за пределы углаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Привязка углового соединения для ограничения при повороте за пределы угла

Сообщение Anonymous »

Я сделал собственный 2D-позвонок на основе этого видео: Простая техника процедурной анимации — Youtube
Я попытался реализовать это здесь (ограничения угла между звеньями позвоночника) ), но каждое решение, которое я придумал, привязывалось к порогу при прохождении определенного угла (90 градусов по часовой стрелке, на котором я остановился). (Я пытался прикрепить gif, но у меня это не сработало.)
Вот соответствующая функция и переменные (они живут в классе Body):< /p>
ArrayList spine = new ArrayList();
int len;

void updateSpine(float thresh) {
for (int i = 0; i < len; i++) {
if (i < 2) {
spine.get(i).update();
} else {
Link a = spine.get(i - 2);
Link b = spine.get(i - 1);
Link c = spine.get(i);

// Calculate angles
float resA = atan2(c.pos.y - a.pos.y, c.pos.x - a.pos.x);
float resB = atan2(b.pos.y - a.pos.y, b.pos.x - a.pos.x);
float result = (resA - resB) * 2;

// Constrain the angle
float cA = constrain(result, -thresh, thresh) + resB;

if (abs(result) > thresh) {
PVector pos = new PVector(cos(cA), sin(cA)).setMag(c.parent.rad);
c.pos = pos.add(c.parent.pos);
} else {
c.update();
}
}
}
}

А вот (урезанный) класс позвоночника:
class Link{
PVector pos = new PVector(100,0);
float rad = 50;
Link parent = null;

void update(){
if(parent == null) return;
PVector sub = PVector.sub(pos, parent.pos);
sub.setMag(parent.rad);
PVector finalPos = sub.add( parent.pos );
pos = finalPos;
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... past-angle
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»