Physics terminology and concepts
물리학 용어 및 개념
To better understand all the details of a physics engine you should understand the following terms and concepts:
물리 엔진의 모든 세부 사항을 더 잘 이해하려면 다음 용어와 개념을 이해해야합니다.
1. Bodies
1. 몸체
A PhysicsBody holds the physical properties of an object.
물리 몸체는 물체의 물리적 속성을 가지고 있습니다.
These include mass, position, rotation, velocity and damping.
여기에는 질량, 위치, 회전, 속도 및 감쇠가 포함됩니다.
PhysicsBody objects are the backbone for shapes.
물리 몸체 객체는 모양의 중추입니다.
A PhysicsBody does not have a shape until you attach a shape to it.
물리학 몸체는 모양을 부착 할 때까지 모양이 없습니다.
2. Material
2. 재료
Materials describe material attributes:
재료는 재료 속성을 설명합니다.
-density: It is used to compute the mass properties of the parent body.
-밀도 : 모체의 질량 특성을 계산하는 데 사용됩니다.
-restitution: It is used to make objects bounce.
-복원 : 물체가 튀게하는 데 사용됩니다.
The restitution value is usually set to be between 0 and 1.
복원 값은 일반적으로 0과 1 사이로 설정됩니다.
0 means no bouncing while 1 means perfect bouncing.
0은 바운스가 없음을 의미하고 1은 완벽한 바운스를 의미합니다.
-friction: It is used to make objects slide along each other realistically.
-마찰 : 물체가 서로를 따라 사실적으로 미끄러지도록 만드는 데 사용됩니다.
3. Shapes
3. 모양
Shapes describe collision geometry.
모양은 충돌 형상을 설명합니다.
By attaching shapes to bodies, you define a body’s shape.
바디에 셰이프를 연결하여 바디 셰이프를 정의합니다.
You can attach as many shapes to a single body as you need in order to define a complex shape.
복잡한 모양을 정의하기 위해 필요한만큼의 모양을 단일 몸체에 첨부 할 수 있습니다.
Each shape relates to a PhysicsMaterial object and contains the following attributes: type, area, mass, moment, offset and tag.
각 모양은 물리 재료 객체와 관련이 있으며 유형, 면적, 질량, 모멘트, 오프셋 및 태그와 같은 속성을 포함합니다.
Some of these you might not be familiar with:
다음 중 일부는 익숙하지 않을 수 있습니다.
-type: describes the categories of shapes, such as circle, box, polygon, etc.
-유형 : 원, 상자, 다각형 등과 같은 모양의 범주를 설명합니다.
-area: used to compute the mass properties of the body.
-area : 신체의 질량 특성을 계산하는 데 사용됩니다.
The density and area gives the mass.
밀도와 면적은 질량을 제공합니다.
-mass: the quantity of matter that a body contains, as measured by its acceleration under a given force or by the force exerted on it by a gravitational field.
-질량 : 주어진 힘 하에서 가속도 또는 중력장에 의해 가해지는 힘으로 측정되는, 신체가 포함하는 물질의 양.
-moment: determines the torque needed for a desired angular acceleration.
-moment : 원하는 각 가속도에 필요한 토크를 결정합니다.
-offset: offset from the body’s center of gravity in body local coordinates.
-offset : 신체 국소 좌표에서 신체 무게 중심으로부터 오프셋.
-tag: used to identify the shape easily for developers.
-tag : 개발자가 모양을 쉽게 식별하는 데 사용됩니다.
You probably remember that you can assign all Node objects a tag for identification and easy access.
식별 및 쉬운 액세스를 위해 모든 노드 개체에 태그를 할당 할 수 있다는 것을 기억할 것입니다.
We describe the various shapes as:
다양한 모양을 다음과 같이 설명합니다.
-PhysicsShape: Shapes implement the PhysicsShape base class.
모양은 물리 모양 기본 클래스를 구현합니다.
-PhysicsShapeCircle: Circles are solid.
You cannot make a hollow circle using the circle shape.
원 모양을 사용하여 속이 빈 원을 만들 수 없습니다.
-PhysicsShapePolygon: Polygon shapes are solid convex polygons.
다각형 모양은 솔리드 볼록 다각형입니다.
-PhysicsShapeBox: Box shape is one kind of convex polygon.
상자 모양은 볼록 다각형의 한 종류입니다.
-PhysicsShapeEdgeSegment: A segment shape.
세그먼트 모양.
-PhysicsShapeEdgePolygon: Hollow polygon shapes.
중공 다각형 모양.
A edge-polygon shape consists of multiple segment shapes.
가장자리 다각형 모양은 여러 세그먼트 모양으로 구성됩니다.
-PhysicsShapeEdgeBox: Hollow box shapes.
A edge-box shape consists of four segment shapes.
가장자리 상자 모양은 네 개의 세그먼트 모양으로 구성됩니다.
-PhysicsShapeEdgeChain: The chain shape provides an efficient way to connect many edges together.
체인 모양은 여러 모서리를 함께 연결하는 효율적인 방법을 제공합니다.
4. Contacts/Joints
4. 접점 / 조인트
Contacts and joint objects describe how bodies are attached to each other.
접촉 및 관절 개체는 바디가 서로 연결되는 방식을 설명합니다.
5. World
A world container is what your physics bodies are added to and where they are simulated.
월드 컨테이너는 물리 바디가 추가되고 시뮬레이션되는 위치입니다.
You add bodies, shapes and constraints to a world and then update the world as a whole.
몸, 모양 및 제약을 세계에 추가 한 다음 세계 전체를 업데이트합니다.
The world controls how all of these items interact together.
세계는 이러한 모든 항목이 함께 상호 작용하는 방식을 제어합니다.
Much of the interaction with the physics API will be with a PhysicsWorld object.
물리 API와의 상호 작용의 대부분은 물리 세계 객체와 관련이 있습니다.
There is a lot to remember here, keep these terms handy to refer back to them as needed.
여기에서 기억해야 할 내용이 많이 있으므로 필요에 따라이 용어를 쉽게 참조 할 수 있도록 보관하십시오.
#. Physics World and Physics Body
#. 물리학 세계와 물리학 몸
1. PhysicsWorld
1. 물리학 세계
A PhysicsWorld object is the core item used when simulating physics.
물리 세계 객체는 물리 시뮬레이션에 사용되는 핵심 항목입니다.
Just like the world we live in, a PhysicsWorld has a lot of things happening at once.
우리가 살고있는 세계와 마찬가지로 물리학 세계는 한 번에 많은 일이 일어나고 있습니다.
PhysicsWorld integrates deeply at the Scene level because of it’s many facets.
물리 세계는 많은요소가 있기 때문에 장면 수준에서 깊이 통합됩니다.
Let’s use a simple example that we can all relate to.
우리 모두가 공감할 수있는 간단한 예를 사용합시다.
Does your residence have a kitchen? Think of this as your physics world! Now your world has PhysicsBody objects, like food, knives, appliances! These bodies interact with each other inside the world.
집에 주방이 있습니까? 이것을 당신의 물리학 세계로 생각하십시오! 이제 여러분의 세계에는 음식, 칼, 가전 제품과 같은 물리 물체가 있습니다! 이 몸은 세계 안에서 서로 상호 작용합니다.
These objects touch and also react to those touches.
이 물체는 접촉하고 또한 그 접촉에 반응합니다.
Example: use a knife to cut food and put it in an appliance.
예 : 칼을 사용하여 음식을 자르고 기기에 넣습니다.
Does the knife cut the food? Maybe.
칼이 음식을 자르나요? 아마도.
Maybe not.
아마.
Perhaps it isn’t the correct type of knife for the job.
작업에 적합한 칼이 아닐 수도 있습니다.
You can create a Scene that contains a PhysicsWorld just by calling the function initWithPhysics() in your Scene.
장면에서 physics ()를 사용하여 init 함수를 호출하여 물리 세계를 포함하는 장면을 만들 수 있습니다.
Your init() function should have:
init () 함수에는 다음이 있어야합니다.
if( !Scene::initWithPhysics() )
{
}
Every PhysicsWorld has properties associated with it:
모든 물리 세계에는 이와 관련된 속성이 있습니다.
-gravity: Global gravity applied to the world.
-중력 : 세계에 적용되는 글로벌 중력.
Defaults to Vec2(0.0f, -98.0f).
-speed: Set the speed of physics world, speed is the rate at which the simulation executes.
-속도 : 물리 세계의 속도를 설정합니다. 속도는 시뮬레이션이 실행되는 속도입니다.
Defaults to 1.0.
-updateRate: set the update rate of physics world, update rate is the value of EngineUpdateTimes/PhysicsWorldUpdateTimes.
-업데이트 속도 : 물리 세계의 업데이트 속도를 설정하고, 업데이트 속도는 엔진 업데이트 시간 / 물리 세계 업데이트 시간의 값입니다.
-substeps: set the number of substeps in an update of the physics world.
-substeps : 물리 세계 업데이트에서 하위 단계 수를 설정합니다.
The process of updating a PhysicsWorld is called stepping.
물리 세계를 업데이트하는 과정을 스테핑이라고합니다.
By default, the PhysicsWorld updates through time automatically.
기본적으로 물리 세계는 시간에 따라 자동으로 업데이트됩니다.
This is called auto stepping.
이를 자동 스테핑이라고합니다.
It automatically happens for you, each frame.
각 프레임마다 자동으로 발생합니다.
You can disable auto steping of the PhysicsWorld by setting setAutoStep(false).
set auto step (false)을 설정하여 물리 세계의 자동 스테핑을 비활성화 할 수 있습니다.
If you do this, you would step the PhysicsWorld manually by setting step(time).
이렇게하면 step (time)을 설정하여 물리 세계를 수동으로 이동합니다.
Substeps are used to step the PhysicsWorld forward multiple times using a more precise time increment than a single frame.
하위 단계는 단일 프레임보다 더 정확한 시간 증분을 사용하여 물리 세계를 여러 번 앞으로 이동하는 데 사용됩니다.
This allows for finer grained control of the stepping process including more fluid movements.
이를 통해 더 많은 유체 이동을 포함하여 스테핑 프로세스를보다 세밀하게 제어 할 수 있습니다.
2. PhysicsBody
2. 물리학 체
PhysicsBody objects have position and velocity.
물리 물체는 위치와 속도를 가지고 있습니다.
You can apply forces, movement, damping and impulses (as well as more) to PhysicsBody objects.
힘, 움직임, 댐핑 및 임펄스를 물리 몸체 오브젝트에 적용 할 수 있습니다.
PhysicsBody can be static or dynamic.
물리 몸체는 정적이거나 동적 일 수 있습니다.
A static body does not move under simulation and behaves as if it has infinite mass.
정적 몸체는 시뮬레이션에서 움직이지 않으며 마치 무한한 질량을 가진 것처럼 동작합니다.
A dynamic body is fully simulated.
다이나믹 바디가 완전히 시뮬레이션됩니다.
They can be moved manually by the user, but normally they move according to forces.
사용자가 수동으로 이동할 수 있지만 일반적으로 힘에 따라 이동합니다.
A dynamic body can collide with all body types.
다이나믹 바디는 모든 바디 유형과 충돌 할 수 있습니다.
Node provides setPhysicsBody() to associate a PhysicsBody to a Node object.
node는 물리 몸체를 노드 객체에 연결하기 위해 setPhysicsBody()를 제공합니다.
Lets create a static and 5 dynamic PhysicsBody objects that are a box shape:
상자 모양 인 정적 및 5 개의 동적 물리 몸체 오브젝트를 만들 수 있습니다.
auto visibleSize = Director::getInstance()->getVisibleSize();
s_centre = Vec2(visibleSize.width/2, visibleSize.height/2);
auto physicsBody = PhysicsBody::createBox(Size(65.0f, 81.0f),
PhysicsMaterial(0.1f, 1.0f, 0.0f));
physicsBody->setDynamic(false);
//create a sprite
// 스프라이트 생성
auto sprite = Sprite::create(“whiteSprite.png”);
sprite->setPosition(s_centre);
addChild(sprite);
//apply physicsBody to the sprite
// 스프라이트에 물리 몸체 적용
sprite-> add component (physics body);
//add five dynamic bodies
// 5 개의 동적 바디 추가
for (int i = 0; i < 5; ++i) { physicsBody = PhysicsBody::createBox(Size(65.0f, 81.0f), PhysicsMaterial(0.1f, 1.0f, 0.0f)); //set the body isn’t affected by the physics world’s gravitational force // 물리 세계의 중력의 영향을받지 않는 신체 설정 physicsBody->setGravityEnable(false);
//set initial velocity of physicsBody
// 물리 체의 초기 속도 설정
physicsBody->setVelocity(Vec2(cocos2d::random(-500,500),
cocos2d::random(-500,500)));
physicsBody->setTag(10);
sprite = Sprite::create(“blueSprite.png”);
sprite->setPosition(Vec2(s_centre.x + cocos2d::random(-300,300),
s_centre.y + cocos2d::random(-300,300)));
sprite->addComponent(physicsBody);
addChild(sprite);
}
The result is a stationary PhysicsBody with 5 additional PhysicsBody objects colliding around it.
그 결과 5 개의 추가 물리 물체가 주변에 충돌하는 고정 된 물리 물체가 생성됩니다.