2014-04-30 3 views
1

회전 조인트의 지정된 각도로 시체를 시작하려면 referenceAngle을 설정하는 느낌이 들었습니다. 이것은 나를 위해 작동하지 않습니다. referenceAngle을 변경할 때 유일한 변화는 한계의 위치입니다.Box2d : 회전 조인트의 시작 각도

저는 box2dweb (자바 스크립트 버전)을 사용하고 있습니다. 나는 당신이보기에 너무 친절한 당신을 위해 데모를 만들었습니다. 회전 조인트가있는 두 개의 동일한 구조가 있습니다. 그들은 둘 다 90도 ~ 90 도의 각도 제한을 가지고 있습니다. 유일한 차이점은 상단 구조가 referenceAngle이 0deg이고 하단이 referenceAngle이 90deg 인 것입니다. 그리고 예, 각도를 라디안 단위로 받아 들인다는 것을 알고 있습니다. 소스를 보면 변환기 함수를 사용하는 것을 볼 수 있습니다.

다시 말해서, 특정 각도에서 시체/관절을 시작하려고합니다. 아마 내가 잘못하고 있다고 확신하지만, 이것이 box2dweb의 문제라면, 시작 각도를 설정하는 대안/대안이 있습니까? 또는 올바른 목적으로 referenceAngle을 사용하지 않습니까?

은 여기입니다 - DEMO

답변

1

당신은 같은 기준 각을 정의 할 수 있습니다 : 두 기관 사이의 각도가있는 다른 기능이 제로로 관절 각도를 고려할 것입니다. 여기서 '다른 기능'은 각도를 다루는 관절의 다른 기능을 말합니다. GetJointAngle, SetLimits.

에베레스트 산의 높이가 8848m라고 할 때처럼 해수면보다 8848m 더 높다는 뜻으로 해발 고도가 오랜 전통으로 간주되기 때문에 암울한 에베레스트 산을 말하는 것처럼 표준 기준선 만 있으면됩니다. 고도를 측정 할 때는 제로가되어야합니다.

예를 들어, 나와 내가 모두 북쪽을 향하고 있다고 가정합니다. 우리 사이의 각도는 0이 될 것이므로 GetJointAngle이 우리에게 어떤 것인지를 묻는다면 0이라고 말할 것입니다. 서쪽으로 향하면, 그들은 GetJointAngle이 90이되었다고 말할 것입니다. 그러나 제가 서쪽을 향하고있을 때, 우리는 그걸 0이라고 대신 할 것입니다. 그 경우, 서쪽을 향하고있을 때 제로, 그리고 다시 북쪽을 향하고있을 때 그들은 -90을 말할 것입니다.

분명히 제로의 기준 각도가 가장 직관적 인 경우이며 다른 어떤 것에도 설정할 필요가 없습니다. 사실 나는 그것이 합동 def 구조에서 완전히 빠져 나갔을 수 있다고 느낍니다.

+1

오. 그래서 referenceAngle은 시작 각을 설정하려고 할 때 찾고 있던 것이 아닙니다. 그런 다음 회전 조인트의 시작 각도를 설정하려면 어떻게해야합니까? SetAsOrientedBox를 사용하여 각도를 설정하려고 시도했지만 조인트 각도 자체가 아닌 조인트와 관련된 본문 만 회전 시켰습니다. – Brimby

+0

요점은 '관절 각'이 실제로는 구체적으로 존재하지 않는다는 것입니다. 그것은 단지 두 개의 몸이 존재하기 때문에 발생하며, 각각 두 개의 몸체가 각도를 가지고 있으며 그 각도의 차이를 비교할 수 있습니다. 그래서 '관절 각'에 영향을주는 유일한 방법은 두 몸체의 각도를 설정하는 것입니다. – iforce2d