Suponha que eu tenha uma primitiva de física que chamarei de "fio", envolvida em um ambiente 2D (como descrito nesta pergunta ).
Aqui está uma ilustração de como isso pode ser:
Na ilustração de exemplo: A caixa está sendo puxada para cima (sustentada) pelo fio e a caixa está puxando o fio para baixo. O objeto na mola está sendo empurrado para baixo pelo fio, mas também está empurrando o fio para cima.
Embora eu ainda não tenha descoberto como implementá-lo, suponha que o fio deslize livremente pelos pontos em que está enrolado.
Em uma simulação de física 2D (ou seja: com base em estrutura), como você calcula as forças (ou impulsos) a serem aplicados aos objetos que estão presos ou envolvidos por um fio como este?
Como aludi na minha primeira pergunta , imagino que se o único objeto não estático "ligado" no fio fosse a massa no final, a força seria idêntica a uma junta de comprimento fixo entre a massa e o ponto anterior. isso no fio.
fonte
F = T * cos(angle between wire and spring axis)
. Qual ângulo exatamente? Além disso: não acho que (na simulação) exista uma maneira sensata de fazer com que o fio "saiba" que existe uma mola presa a esse objeto.Eu definitivamente aprecio sua frustração com esses threads baseados em fio, é um problema difícil de resolver. Nunca tivemos uma colisão funcionando perfeitamente, mas a simulação de restrição é definitivamente factível e direta.
Uma restrição de fio é quase idêntica a uma restrição de distância regular. Em vez de dois pontos de restrição, você tem n + 1 para um fio com n segmentos, um para cada vértice - nos pontos finais, o jacobiano é idêntico a uma restrição de distância (ou seja, é algo como d / | d | onde d é o vetor entre pontos) e, para os nós internos, o jacobiano é algo como (a / | a | - b / | b |) onde aeb são os vetores do nó para os nós adjacentes. (Desculpe, já faz alguns anos desde que eu toquei isso ...)
Você não pode fingir a la "apenas o último segmento é dinâmico" porque, como no seu exemplo, os objetos podem interagir com outros segmentos, mas você só precisa simular massas nas extremidades da corda - internamente a corda pode ser sem massa. Os impulsos de restrição calculados em cada nó precisam ser aplicados ao objeto que está colidindo nesse nó.
Aqui estão alguns artigos relacionados:
Os três primeiros são relativamente recentes e devem ajudar muito. A página 75 do papel de baixo descreve uma restrição "multibar", que é essencialmente um fio.
Boa sorte :)
Raigan
fonte
A idéia básica é que o comprimento da corda permaneça o mesmo. Se estiver sendo empurrado para cima, você precisará criar um "ponto de divisão" lá. Então a corda determina de que lado está presa, porque não pode "crescer" nessa direção. Como está preso a algo à direita, o pedaço de corda à esquerda ficará mais curto e a peça entre o ponto de divisão e o ponto anexado ficará um pouco mais longa. Então, como Niall disse, calcule a tensão do fio. Como eu faria isso é calcular a tensão de cada "pedaço" de corda. Você pode usar isso para determinar as forças envolvidas.
Espero que isto ajude.
fonte