내 문제는 모양에 상당한 양의 각운동량 (시각적으로 눈에 띄는 것)이 생기면 충돌이 더 이상 작동하지 않는다는 것입니다. 그것은 충돌하고, 속도가 느려지지만, 탄력성이 지시 할 때 리바운드하지 않으며, 한 번에 '충격적'도 아니며, 정체 될 때까지 서서히 속도를 줄입니다. 어떤 각속도가없는 경우 http://www.myphysicslab.com/collision.html각도 속도 및 계산 문제
public boolean checkBounds() {
if(bX1 == bX2 || bY1 == bY2) {
return false;
}
double xa = 0D;
double ya = 0D;
int a = 0;
boolean hC = false;
double xn = 0D;
double yn = 0D;
for(double[] vertex : this.getShape().getVerticies()) {
if(vertex[0] >= bX2) {
xa += vertex[0];
ya += vertex[1];
a++;
hC = true;
xn -= 1D;
}
if(vertex[0] <= bX1) {
xa += vertex[0];
ya += vertex[1];
a++;
hC = true;
xn += 1D;
}
if(vertex[1] >= bY2) {
xa += vertex[0];
ya += vertex[1];
a++;
hC = true;
yn -= 1D;
}
if(vertex[1] <= bY1) {
xa += vertex[0];
ya += vertex[1];
a++;
hC = true;
yn += 1D;
}
}
if(hC) {
Vec2 n = new Vec2(xn, yn).uscale();
Vec2 cp = new Vec2(xa/a, ya/a);
Vec2 rap = cp.sub(getShape().getCM());
Vec2 va = getVelocityAt(rap);
Vec2 rva = va;
Vec2 rvb = Vec2.ZERO_VEC.sub(va);
double pj = -(1D + getElasticity()) * rva.dot(n);
double j = pj/(1/getShape().getMass() + Math.pow(rap.cross(n), 2D)/getShape().getMass());
applyForce(new AppliedForce(n.scale(j), rap, getShape().getMass()));
}
return hC;
}
public void applyForce(AppliedForce... f) {
for(AppliedForce vec : f) {
Vec2 a = vec.getForce().divide(getShape().getMass());
applyLinearAcceleration(a);
double aa = a.relativeCosine(getShape().getTangent(vec.getOffsetCM())) * a.getMagnitude()/getShape().getMass();
applyAngularAcceleration(aa);
}
}
, 그럼 아무 문제가 발생하지 :
public Vec2 getVelocityAt(Vec2 p) {
return getLinearVelocity().add(new Vec2(-getAngularVelocity() * p.getY(), getAngularVelocity() * p.getX()));
}
나는 여기 방정식을 다음있어, 문제가 바로 위의 코드 관련이 상당히 확실 해요 더 높은 각속도에 의해 더 발음된다. 나는 포인트 함수에서의 속도가 이슈의 근원이라고 생각하지만 왜 그런지는 확실하지 않다. 나는 많은 것을 발견하지 못하고 디버깅을 해왔다. 수학에 대한 오해라고 생각한다. 아무도 내가 뭘 잘못했는지 알아?
랩 벡터 대량의 중심에서vap1 = va1 + ωa1 × rap
이 몸 쪽을 가리 키도록 : 나는 절에서 첫 공식 찾고 있어요
그러나 내 각속도는 벡터가 아니라 이중입니다. 그것은 독립적 인 구성 요소입니다. 내가 어떻게 설정했는지는 그것을위한 크로스 제품이어야한다. 각속도를 기준으로 질량 중심에 대한 선형 속도를 계산해야합니까? – user2507230
죄송합니다. 내 실수로 인해 교차 상품을 작성한 지 오래되었습니다.} 2D로되어있어 각속도가 ang 속도와 동일한 표준 z 축입니다. 방금 더 조심스럽게 보았습니다. 문제는 괜찮습니다. 문제는 다른 곳에서 발생합니다. 나는 다시 시작했다. – Schollii
va1은 선형 속도이며 add 문에 포함 된 코드에서 wa1과 rap1을 교차시킵니다. 나는 랩의 잘못된 순서로 빼는 것 같아. 편집 : 오. 나는 바보, 고마워. – user2507230