KR101694296B1 - 회전하는 공의 충돌 시뮬레이션 방법 - Google Patents

회전하는 공의 충돌 시뮬레이션 방법 Download PDF

Info

Publication number
KR101694296B1
KR101694296B1 KR1020110135907A KR20110135907A KR101694296B1 KR 101694296 B1 KR101694296 B1 KR 101694296B1 KR 1020110135907 A KR1020110135907 A KR 1020110135907A KR 20110135907 A KR20110135907 A KR 20110135907A KR 101694296 B1 KR101694296 B1 KR 101694296B1
Authority
KR
South Korea
Prior art keywords
ball
center point
collision
calculating
ground
Prior art date
Application number
KR1020110135907A
Other languages
English (en)
Other versions
KR20130068613A (ko
Inventor
백성민
김종성
김명규
정일권
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020110135907A priority Critical patent/KR101694296B1/ko
Priority to US13/563,661 priority patent/US20130158966A1/en
Publication of KR20130068613A publication Critical patent/KR20130068613A/ko
Application granted granted Critical
Publication of KR101694296B1 publication Critical patent/KR101694296B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • A63F13/573Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using trajectories of game objects, e.g. of a golf ball according to the point of impact
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/812Ball games, e.g. soccer or baseball
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/816Athletics, e.g. track-and-field sports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • A63F2300/643Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car by determining the impact between objects, e.g. collision detection
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • A63F2300/646Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car for calculating the trajectory of an object
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8011Ball
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은 가상 스포츠 게임(예 : 골프, 야구, 축구, 테니스)에서 회전하며 이동하는 공의 충돌 궤적을 시뮬레이션하는 방법에 관한 것이다. 이러한 본 발명의 바람직한 실시예에 따른 회전하는 공의 충돌 시뮬레이션 방법은, 회전하는 공의 충돌을 검출하는 단계; 공의 회전과 지면과의 마찰을 고려하여 공의 충돌 후 속도를 계산하는 단계; 공의 충돌 후 중심점을 계산하는 단계; 및 공이 굴러가고 멈추는 단계;를 포함하며, 상기 회전하는 공의 충돌을 검출하는 단계는, 공의 이전 위치에서의 중심점과 현재 위치에서의 중심점을 연결한 선분이 지면과 충돌하는지 검사하는 단계; 및 공의 하단부 벡터들을 생성하여 지면과 충돌하는지 검사하는 단계;를 포함한다.

Description

회전하는 공의 충돌 시뮬레이션 방법{METHOD OF COLLISION SIMULATION FOR SPINNING BALL}
본 발명은 가상 스포츠 게임(예 : 골프, 야구, 축구, 테니스)에서 회전하며 이동하는 공의 충돌 궤적을 시뮬레이션하는 방법에 관한 것이다.
공을 이용하는 체감형 스포츠 게임의 핵심은 공의 이동 궤적을 계산하는 것이다. 공을 치거나 던지거나 차는 것에 의해 공의 이동이 시작되고 일정한 시간 후에는 지면으로 떨어지게 된다. 이때, 공의 속도, 방향, 회전, 공의 탄성 계수, 지면의 충돌 계수, 지면의 기울기에 따라 충돌 후에 튀어나가는 방향이 달라진다. 공은 몇 번 튀어오른 후에 구르기를 시작하는데, 공의 구름(rolling)은 지면의 마찰력, 지면의 기울기에 영향을 받는다.
종래의 물체의 충돌에 의한 충격(impulse)을 적용하는 강체 시뮬레이션은 상술한 바와 같은 다양한 충돌 특성에 대해 강한 회전에 의한 변화를 정확하게 표현하지 못하는 문제점이 있다. 특히, 구(sphere) 형상의 물체에 대해서 충격량을 계산할 때에는 공의 중심에서 충돌점까지의 벡터가 충돌한 면의 법선 벡터 방향(normal vector) 방향과 동일 선상에 있기 때문에 회전 힘이 "0"이 된다는 문제점이 있다. 기존에 공개된 기술 중에 공이 충돌했을 때 공이 튀어오르는 방향을 제시한 경우가 있지만, 이 역시 공에 강한 회전이 있는 경우에 대해서는 언급하고 있지 않다.
현재 많은 가상 스포츠 게임들이 있으나, 강체 시뮬레이션을 기반으로 하기 때문에 앞에서 언급한 바와 같이 공이 지면과 충돌 후에 튀어 오르는 궤적(bouncing trajectory)을 정확하게 시뮬레이션하는 부분은 부족하다. 특히, 골프와 같이 공의 속도가 빠르고 강한 회전이 있는 공에 대해서 충돌 후 튀어오르는 방향 및 속도의 계산은 쉽지 않다.
본 발명은 공과 지면의 충돌을 2단계로 검사하는 방법을 통해 정확한 충돌 지점을 찾는 방법을 제시하고, 충돌 시에 충격량 계산하고, 회전력 및 운동 마찰력을 적용하여 충돌 방향 및 속도를 결정하는 방법을 제시하고, 충돌 직후 충돌 지점과 충돌 방향을 고려하여 공의 중심점을 계산하는 방법을 제시하고, 공이 튀어오름 상태에서 구름(rolling) 상태로 변하기 위한 조건, 구름 상태에서 튀어오름 상태로 전이하기 위한 조건 및 구름 상태에서 정지 상태로 전이하기 위한 조건을 제시하는 것이다.
상기와 같은 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 회전하는 공의 충돌 시뮬레이션 방법은, 컴퓨터 장치에 의해 수행되는 회전하는 공의 충돌 시뮬레이션 방법에 있어서, 프로세서가 상기 공의 이전 위치에서의 제 1중심점과 현재 위치에서의 제 2중심점을 연결한 선분이 지면과 충돌하는지 1차 검사하는 단계; 및 상기 프로세서가, 상기 1차 검사하는 단계에서 충돌이 있는 경우, 상기 공의 충돌 지점에서 상기 제 1 중심점 방향으로 미리 정한 거리만큼 이동한 위치를 제 3 중심점으로 계산하는 단계;상기 프로세서가 공의 운동량의 변화인 충격량을 계산하고, 상기 충격량을 이용하여 상기 충돌 후 공의 속도 및 회전을 계산하는 단계; 상기 프로세서가 상기 제 3 중심점, 상기 공의 충돌 후 상기 공의 속도 및 상기 회전을 이용하여 충돌직 후의 중심점인 제 4 중심점을 계산하는 단계; 및 상기 프로세서가 상기 공이 상기 제 1 중심점에서 상기 제 4 중심점으로 이동하는 모습을 표시하는 단계;를 포함하고, 상기 제 4 중심점을 계산하는 단계는, 상기 공의 제 1 중심점에서 상기 제 2 중심점까지의 거리와, 충돌 시 상기 제 3 중심점에서 상기 제 2 중심점까지의 거리의 비를 적용하여 충돌 후 공의 중심점인 상기 제 4 중심점을 계산하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법.

그리고, 상기 공의 회전과 지면과의 마찰을 고려하여 공의 충돌 후 속도를 계산하는 단계에서는, 공의 충돌 후 방향 및 속도를
Figure 112016067790730-pat00001
축 성분으로 구분하는 단계;
Figure 112016067790730-pat00002
축 방향으로는 충격량 및 지면의 단단함 정도의 속성을 적용하여 계산하는 단계; 및
Figure 112016067790730-pat00003
축 방향으로는 지면 마찰에 의한 속도 변화와 공의 회전에 의한 속도 변화를 적용하여 계산하는 단계; 를 포함한다. 그리고, 상기 공의 회전과 지면과의 마찰을 고려하여 공의 충돌 후 속도를 계산하는 단계에서는, 공의 충돌 전 회전과 공의 충돌 후 지면 마찰에 의한 회전을 고려한다. 그리고, 상기 공의 충돌 후 중심점을 계산하는 단계에서는, 공의 이전 위치에서 현재 위치까지의 거리와, 충돌 직후 공의 중심점에서 현재 위치까지의 거리의 비를 적용하여 충돌 후 공의 중심점을 계산한다.
상기와 같은 목적을 달성하기 위한 본 발명의 바람직한 다른 실시예에 따른 회전하는 공의 충돌 시뮬레이션 방법은, 공의 비행 상태에서 튐 상태로의 전이를 공의 충돌 여부로 결정하는 단계; 공의 튑 상태에서 구름 상태로의 전이를 공의 높이로 결정하는 단계; 공의 구름 상태에서 공의 멈춤 상태로의 전이를 공의 이동 속도 및 거리로 결정하는 단계; 및 공의 구름 상태에서 공의 튐 상태로의 전이를 공의 지면과의 거리로 결정하는 단계; 를 포함한다. 여기서, 공의 충돌 여부를 결정하는데 있어서, 공의 이전 위치에서의 중심점과 현재 위치에서의 중심점을 연결한 선분이 지면과 충돌하는지 검사하는 단계; 및 공의 하단부 벡터들(
Figure 112011099993308-pat00004
)을 생성하여 지면과 충돌하는지 검사하는 단계; 를 수행한다.
상기와 같은 본 발명은, 고속으로 회전하는 공의 충돌 궤적을 정확하게 시뮬레이션할 수 있으며, 실제 필드에서 발생할 수 있는 다양한 공의 궤적 변화를 제공함으로써, 공을 활용한 스포츠 게임에서 사실감을 높이는 효과를 얻을 수 있다.
도 1은 본 발명에 따른 공의 충돌 시뮬레이션에 있어서 상태 변화의 예를 나타낸 도면.
도 2는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공과 지면의 2단계 충돌 검사의 예를 나타낸 도면.
도 3은 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공의 2단계 충돌 검사를 위한 하단부 벡터 생성의 예를 나타낸 도면.
도 4는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공과 지면이 충돌할 때 충돌 후 방향을 계산하기 위한 기본 축의 예를 나타낸 도면.
도 5는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공이 지면을 따라 굴러갈 때 충돌 검사의 예를 나타낸 도면.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예에 따른 공의 충돌 시뮬레이션 방법에 대하여 상세히 설명하면 다음과 같다.
도 1에는 본 발명에 있어서 공의 충돌 후 이동 궤적을 시뮬레이션하기 위한 상태 다이어그램을 도시하였다.
도 1을 참조하면, 공의 상태는 4가지로 구성되는데, 초기 공은 비행(Flight)하고 있다고 가정한다(S100). 공이 비행 상태에 있는 경우에는 공이 지면 등과 충돌하는지 검사한다(S110). 만약 공의 충돌이 발생하는 경우에 공은 튀어오르는(Bouncing) 상태가 된다(S200). 이때, 충돌 검사는 2단계 검사를 이용한다.
도 2에는 2단계 충돌 검사 및 충돌 직후 중심점 위치 이동에 대한 예를 도시하였다.
도 2를 참조하면, 1단계에서는 공의 이전 위치(P 1)와 현재 위치(P 2)를 이용하여 공의 중심점 P 1P 2를 연결하는 선분을 생성하고 선분
Figure 112011099993308-pat00005
이 지면 등 주변 물체와 충돌하는지 검사한다. 만약, 선분
Figure 112011099993308-pat00006
이 면과 교차를 하면 공이 물체와 충돌한 것임을 알 수 있다.
만약 1번째 단계에서 선분
Figure 112016067790730-pat00067
과 면이 교차하지 않는다면 2번째 단계 검사를 진행한다. 2번째 단계 검사에서는, 공의 중심점 P 1P 2를 연결하는 선분과 지면과의 충돌은 발생하지 않았지만 실제로 공은 부피가 있기 때문에 공의 중심점(P 2)에서 표면까지의 벡터들이 주변 환경과 충돌했는지 검사한다. 여기서, 지면 등은 굴곡이 존재하며, 주변의 장애물과의 충돌이 발생할 수 있기 때문에, P 2를 시작점으로 길이가 공의 반지름(R)인
Figure 112016067790730-pat00007
벡터들을 생성하여 충돌 검출을 한다. 여기서,
Figure 112016067790730-pat00008
벡터는 공의 하단부가 주변 장애물과 충돌했는지 검사하기 위한 샘플링된 벡터이다.
Figure 112016067790730-pat00009
벡터는 도 3에 도시한 바와 같이 P 2를 원점으로 보았을 때 x축, -x축, z축, -z축을 기준으로 보간(interpolation)을 통해 중간 벡터를 생성하게 된다. xz평면에서 생성된 중간 벡터와 -y축과의 벡터의 보간을 통해
Figure 112016067790730-pat00010
벡터를 생성할 수 있다. 이때, 중간에 생성하는 벡터는 공의 크기에 따라 개수를 조절할 수 있다. 도 3에서는 중간에 1개씩(t=0.5) 생성하고 있는 예를 위, 옆, 앞 시점에서 보여주고 있다. 필요한 경우 공의 상단부도 검사가 가능하다
선분과 면이 교차하는 지점을 찾아내었다면(즉, 1번째 단계에서 충돌이 검출되었다면), 이를 이용하여 공이 지면과 충돌하는 순간에서 공의 중심점 위치를 계산한다. 이는 충돌 이후 공의 정확한 위치를 찾기 위한 중간 단계라고 할 수 있다. 충돌 직후에 공의 중심점은 충돌 지점에서 P 1 방향으로
Figure 112011099993308-pat00011
만큼 이동된 위치가 충돌하는 순간 공의 중심점(C 1)의 위치가 된다. 2번째 단계에서 충돌이 발생한 경우에는 P 2에서 P 2 방향으로
Figure 112011099993308-pat00012
만큼 이동시키면 충돌하는 순간 공의 중심점의 위치(C 1)가 된다. 여기서, 한가지 더 고려해야 하는 사항은 충돌 직후 중심점(C 1)에서 P 2까지 남은 거리를 계산해주어야 부드러운 충돌 궤적을 만들 수 있다는 점이다. 선분
Figure 112011099993308-pat00013
의 길이를 L 1, 충돌한 순간 공의 중심점(C 1)에서 P 2까지 거리를 L 2라고 하였을 때 두 선분의 길이의 비(t=L 2/L1)를 이용하여 충돌 후 공의 실제 중심점(C 2)을 계산한다. 충돌 최종 중심점(C 2) 위치는 충돌 후 방향과 속도를 알아야 계산이 가능하므로 충돌 후 속도와 방향이 결정되면 다시 언급하도록 한다.
충돌 순간 공의 중심점(C 1)이 구한 후에는 충격량(j)을 계산한다. 충격량은 어떤 시간 내의 운동량의 변화이다. 강체 시뮬레이션에서는 이러한 충격량을 이용하여, 두 물체가 충돌하였을 때의 충돌 후 속도와 회전을 계산한다. 충격량은 아래 수학식 1을 통해 구할 수 있다.
[수학식 1]
Figure 112011099993308-pat00014
상기 수학식 1에서,
Figure 112011099993308-pat00015
는 공의 탄성 계수이고,
Figure 112011099993308-pat00016
는 공의 충돌 전 속도이며,
Figure 112011099993308-pat00017
는 충돌 전 각속도이고,
Figure 112011099993308-pat00018
는 공의 중심점에서 충돌점까지 벡터이며, N은 충돌한 위치에서 지면의 노말 벡터(normal vector)이고,
Figure 112011099993308-pat00019
는 공의 질량이며,
Figure 112011099993308-pat00020
는 관성 모멘트이다.
그러나, 공과 같은 구형(sphere)의 물체가 면과 충돌하는 경우에는 공의 중심에서 충돌 지점까지의 벡터(
Figure 112011099993308-pat00021
)와 지면의 노말 벡터(N)가 동일 선상에 존재하기 때문에 회전에 의한 변화량이 "0"이 된다. 이는, 공의 회전에 의한 힘을 궤적 변화에 적용할 수 없다는 의미가 된다.
이를 해결하기 위해, 먼저, 공이 지면의 법선 벡터 방향으로 튀어오르는 성분과 지면의 접선 벡터 방향으로 진행하는 성분으로 분리한다. 이때, 기준 축은 도 4에 도시된 바와 같다.
Figure 112011099993308-pat00022
축은 공이 위로 튀어오르는 성분을 의미하는 단위 벡터이며, 지면의 법선 벡터 방향과 일치한다. 실험에 의하면, 공은 회전과 관계없이 공의 탄성 및 지면의 탄성에 의해 튀어오르는 높이가 결정된다. 따라서, 공이 튀어오르는 속도를 계산하기 위해서는 아래 수학식 2와 같이 회전과 관계된 부분을 제거한 충격량만 사용한다.
[수학식 2]
Figure 112011099993308-pat00023
상기 수학식 2를 사용하여 아래 수학식 3을 통해 충돌 후
Figure 112011099993308-pat00024
축 방향의 공의 속도(
Figure 112011099993308-pat00025
)을 구한다.
[수학식 3]
Figure 112011099993308-pat00026
상기 수학식 3에서
Figure 112011099993308-pat00027
는 지면의 딱딱함 정도를 나타내는 수치이며, 지면이 단단할수록 공이 잘 튀어오르고 부드러울수록 안 튀어 오름을 표현할 수 있다.
공이 지면과 충돌 후 진행 방향에서의 속도는 다음과 같이 계산된다. 먼저,
Figure 112011099993308-pat00028
평면 상에서의 공의 진행 방향을
Figure 112011099993308-pat00029
이라고 하면, 이는 아래 수학식 4와 같이 계산할 수 있다.
[수학식 4]
Figure 112011099993308-pat00030
충돌에 의한 마찰은 지면의 운동 마찰 계수 및 충격량과 연관되어 있으며, 이는 아래 수학식 5와 같이 나타낼 수 있다.
[수학식 5]
Figure 112011099993308-pat00031
상기 수학식 5에서
Figure 112011099993308-pat00032
는 마찰에 의한 속도이고,
Figure 112011099993308-pat00033
는 지면의 운동 마찰 계수이며, j는 충격량이다. 마찰에 의한 속도는 공의 운동을 방해하는 성분이므로 공의 진행 방향과 반대 방향이 된다.
회전에 의한 속도 변화는 공의 회전 방향, 회전 속도에 따라 달라진다. 날아가는 공이 지면에 충돌하는 순간에 지면과의 마찰에 의해 공에 회전이 발생하는 경우에는 충돌 궤적에 영향을 미치지 않는다. 공이 마찰에 의해 발생하는 회전량(
Figure 112011099993308-pat00034
)은 아래 수학식 6과 같이 구한다.
[수학식 6]
Figure 112011099993308-pat00035
상기 수학식 6에서
Figure 112011099993308-pat00036
은 공의 회전 방향, R은 공의 반지름이다. 즉, 공의 회전축은 진행 방향과 연관이 있으며, 회전 속도는 진행 방향 속도를 반지름으로 나눈 것과 같다.
공의 회전이 충돌 후 속도에 영상을 미치는 경우는 충돌 전 공의 회전이 앞에서 언급한 지면 마찰에 의해 발생하는 회전보다 큰 경우이며, 이는 수식으로 나타내면 아래 수학식 7과 같다. 충돌 직전 공의 회전을
Figure 112011099993308-pat00037
라고 하였을 때 상기 수학식 6에 의해 계산된 회전(
Figure 112011099993308-pat00038
)과 비교하여 방향이 다른 경우에는 두 회전 값을 더한 값을 충돌 후 회전 값
Figure 112011099993308-pat00039
으로 설정한다. 이때,
Figure 112011099993308-pat00040
인 경우에만 속도 변화에 영향을 주도록 하며, 그렇지 않은 경우에는 "0"이 된다.
[수학식 7]
Figure 112011099993308-pat00041
두 회전축 방향이 같은 경우에는 두 회전 값의 차이만큼만 충돌 후 회전 값
Figure 112011099993308-pat00042
으로 설정한다. 이때도
Figure 112011099993308-pat00043
인 경우에만 속도 변화에 영향을 주도록 하며, 그렇지 않은 경우에는 "0"이 된다.
상기 수학식들에 의해 충돌 후 최종 속도는 아래 수학식 8과 같이 구할 수 있다.
[수학식 8]
Figure 112011099993308-pat00044
충돌 후 공의 방향 및 속도가 결정되면, 상기 이동된 중심점의 최종 위치(C 2)를 구할 수 있다. 이동 방향은 충돌 후 공의 방향(
Figure 112011099993308-pat00045
)이며, 이동 거리(L')는 아래 수학식 9와 같이 계산한다.
[수학식 9]
Figure 112011099993308-pat00046
상기 수학식 9에서 dt는 공의 위치가 P 1에서 P 2까지 이동한 시간, t는 앞에서 설명한 바와 같이 선분
Figure 112011099993308-pat00047
의 길이와 충돌 직후 공의 중심점(C 1)에서 P 2까지 거리의 비율(0≤t≤1)을 의미한다.
상술한 바와 같은 방법을 사용하면 공의 회전에 의한 사실적이고 다양한 튀어오름 효과를 얻을 수 있다.(예 : 골프공의 백스핀에 의해 공이 뒤고 튀어오르는 현상)
공이 몇 번 튀어오른 후에는 굴러가거나 멈추게 된다. 튀어오름 상태에서 구름상태로 전이되는 조건은 충돌 후 공이 튀어오르는 높이(
Figure 112011099993308-pat00048
축 방향)로 정의하였다(S210). 상술한 바와 같이 충돌 후 공의 속도를 이용하여 공의 최고 높이(h)를 미리 계산할 수 있다. 아래 수학식 10은 공이 튀어오를 때 높이를 구하는 식이며, △t를 반복하여 최고 높이를 구할 수 있으며,
Figure 112011099993308-pat00049
축 방향의 높이는 지면 노말 벡터와 내적을 통해 구할 수 있다.
[수학식 10]
Figure 112011099993308-pat00050
공이 튀어오르는 높이(h')가 미리 정의된 높이보다 낮으면 공은 구름상태로 전이된다(S300).
공이 굴러갈 때 지면과의 충돌이 중요한 부분이다. 공이 지면을 파고들지 않으면서 지면의 곡면을 따라 자연스럽게 이동하도록 하기 위해서는 상술할 2단계 충돌 검사 중에 2번째 단계를 이용한다. 이는 지면에 굴곡이 있는 경우에 오르막 혹은 내리막에서도 충돌 지점을 정확하게 찾기 위함이다. 다소 차이점이 있다면, 아래 수학식 11에서와 같이 공이 이동하는 방향을 지면 법선 벡터의 반대 방향(
Figure 112011099993308-pat00051
)으로 향하게 함으로써 공의 하단부가 지면과 항상 충돌이 발생하도록 유도한다는 점이다. 아래 수학식 11에서,
Figure 112011099993308-pat00052
는 값이 아주 작은 상수이다. 이와 같이 중심점을 이동하면, 지면과의 충돌을 항상 검출할 수 있으며, 오르막이나 내리막과 같이 지면의 기울기가 변하는 경우에 대해서도 검출이 가능하다.
[수학식 11]
Figure 112011099993308-pat00053
구름 마찰력은 공이 이동하는 방향과 반대로 발생하며, 지면의 경사에 의해 굴러가는 속력이 달라질 수 있다. 따라서, 공이 굴러갈 때의 속력은 구름 마찰력과 지면의 기울기를 고려하여 아래 수학식 12와 같이 구할 수 있다. 아래 수학식 12에서
Figure 112011099993308-pat00054
는 지면의 기울기 각도,
Figure 112011099993308-pat00055
은 구름 마찰계수이다.
[수학식 12]
Figure 112011099993308-pat00056
충돌 검사에 의해 공이 지면과 충돌 검출이 되지 않았다면, 이는 공이 내리막 경사에 접어들었다는 의미이다. 이 경우에는, 아래쪽(-y축 방향)으로 일정 거리의 레이(ray)를 쏘아 지면과 충돌하는지 검사를 하게 된다. 만약 일정 거리 내에 지면과 충돌 지점을 찾지 못하는 경우에는(S310) 급경사에 이한 낙하를 의미하므로 다시 튀어오름(Bouncing) 상태로 전이시킨다(S200).
충돌 검사 후에, 상술한 충돌 위치 계산을 통해 공의 중심점을 조절하면 공은 항상 지면 위에서 구르는 것처럼 보인다. 굴러가는 공은 이동 거리가
Figure 112011099993308-pat00057
보다 작아지면서 진행 방향 속도가
Figure 112011099993308-pat00058
보다 작아지는 경우(S320) 멈춤 상태로 전이하게 되며 시뮬레이션 과정이 종료된다(S400).
본 발명에서는 회전하며 이동한 공의 충돌 후 튀어오르는 힘을 시뮬레이션하기 위해 공과 지면의 탄성 계수와 공의 회전량을 고려하였으며, 이후 굴러가는 동작으로 전이하고 멈추는 과정까지 표현함으로써 사실적인 공의 시뮬레이션이 가능하다. 본 발명에서 제시하는 방법은 공을 이용한 모든 스포츠 게임에 적용하는 것이 가능하다.

Claims (7)

  1. 컴퓨터 장치에 의해 수행되는 회전하는 공의 충돌 시뮬레이션 방법에 있어서,
    프로세서가 상기 공의 이전 위치에서의 제 1중심점과 현재 위치에서의 제 2중심점을 연결한 선분이 지면과 충돌하는지 1차 검사하는 단계; 및
    상기 프로세서가, 상기 1차 검사하는 단계에서 충돌이 있는 경우, 상기 공의 충돌 지점에서 상기 제 1 중심점 방향으로 미리 정한 거리만큼 이동한 위치를 제 3 중심점으로 계산하는 단계;
    상기 프로세서가 공의 운동량의 변화인 충격량을 계산하고, 상기 충격량을 이용하여 상기 충돌 후 공의 속도 및 회전을 계산하는 단계;
    상기 프로세서가 상기 제 3 중심점, 상기 공의 충돌 후 상기 공의 속도 및 상기 회전을 이용하여 충돌직 후의 중심점인 제 4 중심점을 계산하는 단계; 및
    상기 프로세서가 상기 공이 상기 제 1 중심점에서 상기 제 4 중심점으로 이동하는 모습을 표시하는 단계;를 포함하고,
    상기 제 4 중심점을 계산하는 단계는,
    상기 공의 제 1 중심점에서 상기 제 2 중심점까지의 거리와, 충돌 시 상기 제 3 중심점에서 상기 제 2 중심점까지의 거리의 비를 적용하여 충돌 후 공의 중심점인 상기 제 4 중심점을 계산하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법.
  2. 제 1항에 있어서,
    상기 프로세서가 상기 1차 검사하는 단계에서 충돌이 없는 경우 상기 공의 하단부 벡터들을 생성하여 상기 공의 하단부 벡터들이 상기 지면과 충돌하는지 2차 검사하는 단계; 및
    상기 2차 검사하는 단계에서 충돌이 있는 경우, 상기 프로세서가 상기 제 2 중심점에서 상기 제 1 중심점 방향으로 h/cos만큼 이동시킨 위치를 제 3 중심점으로 계산하는 단계;
    를 더 포함하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법.
  3. 제 1 항에 있어서,
    상기 공의 속도 및 회전을 계산하는 단계는,
    공의 충돌 후 방향 및 속도를
    Figure 112016067790730-pat00059
    축 성분으로 구분하는 단계;
    Figure 112016067790730-pat00060
    축 방향으로는 충격량 및 지면의 단단함 정도의 속성을 적용하여 계산하는 단계; 및
    Figure 112016067790730-pat00061
    축 방향으로는 지면 마찰에 의한 속도 변화와 공의 회전에 의한 속도 변화를 적용하여 계산하는 단계;
    를 포함하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법.
  4. 제 1 항에 있어서,
    상기 공의 속도 및 회전을 계산하는 단계는,
    <수학식 1>
    Figure 112016067790730-pat00068

    (
    Figure 112016067790730-pat00069
    는 회전량,
    Figure 112016067790730-pat00070
    은 공의 회전방향, R은 공의 반지름 vf는 마찰에 의한 속도,
    Figure 112016067790730-pat00071
    Figure 112016067790730-pat00072
    평면상에서의 공의 진행방향,
    Figure 112016067790730-pat00073
    는 공의 충돌 전 속도임)
    상기 수학식 1을 통해 회전량을 계산하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법.
  5. 삭제
  6. 컴퓨터 장치에 의해 수행되는 회전하는 공의 충돌 시뮬레이션 방법에 있어서,
    프로세서가 공의 비행 상태에서 튐 상태로의 전이를 공의 충돌 여부로 결정하는 단계;
    상기 프로세서가 공의 튐 상태에서 상기 공이 튀어오르는 높이가 미리 정한 높이보다 낮으면 공이 구름 상태로 전이된 것으로 결정하는 단계
    상기 프로세서가 공의 구름 상태에서 멈춤상태로의 전이를 공의 이동 속도 및 거리로 결정하는 단계; 및
    상기 프로세서가 공의 구름 상태에서 공의 튐 상태로의 전이를 공의 지면과의 거리로 결정하는 단계를 포함하고,
    상기 튐 상태로의 전이를 공의 충돌 여부로 결정하는 단계는,
    상기 프로세서가 상기 공의 이전 위치에서의 제 1중심점과 현재 위치에서의 제 2중심점을 연결한 선분이 지면과 충돌하는지 1차 검사하는 단계; 및
    상기 프로세서가, 상기 1차 검사하는 단계에서 충돌이 있는 경우, 상기 공의 충돌 지점에서 상기 제 1 중심점 방향으로 미리 정한 거리만큼 이동한 위치를 제 3 중심점으로 계산하는 단계;
    상기 프로세서가 공의 운동량의 변화인 충격량을 계산하고, 상기 충격량을 이용하여 상기 충돌 후 공의 속도 및 회전을 계산하는 단계; 및
    상기 프로세서가 상기 제 3 중심점, 상기 공의 충돌 후 상기 공의 속도 및 상기 회전을 이용하여 충돌직 후의 중심점인 제 4 중심점을 계산하는 단계;
    를 포함하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법.
  7. 삭제
KR1020110135907A 2011-12-15 2011-12-15 회전하는 공의 충돌 시뮬레이션 방법 KR101694296B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110135907A KR101694296B1 (ko) 2011-12-15 2011-12-15 회전하는 공의 충돌 시뮬레이션 방법
US13/563,661 US20130158966A1 (en) 2011-12-15 2012-07-31 Method of collision simulation for spinning ball

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110135907A KR101694296B1 (ko) 2011-12-15 2011-12-15 회전하는 공의 충돌 시뮬레이션 방법

Publications (2)

Publication Number Publication Date
KR20130068613A KR20130068613A (ko) 2013-06-26
KR101694296B1 true KR101694296B1 (ko) 2017-01-24

Family

ID=48611048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110135907A KR101694296B1 (ko) 2011-12-15 2011-12-15 회전하는 공의 충돌 시뮬레이션 방법

Country Status (2)

Country Link
US (1) US20130158966A1 (ko)
KR (1) KR101694296B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8085188B2 (en) 2004-07-02 2011-12-27 Trackman A/S Method and apparatus for determining a deviation between an actual direction of a launched projectile and a predetermined direction
KR102408358B1 (ko) 2009-01-29 2022-06-14 트랙맨 에이/에스 레이더 및 촬상 요소를 포함하는 조립체
US10186041B2 (en) 2015-04-09 2019-01-22 Electronics And Telecommunications Research Institute Apparatus and method for analyzing golf motion
US10102316B2 (en) * 2015-12-15 2018-10-16 Dassault Systemes Simulia Corp. Virtual reality authoring method
US10628537B2 (en) 2016-04-12 2020-04-21 Dassault Systemes Simulia Corp. Simulation augmented reality system for emergent behavior
JP6483056B2 (ja) * 2016-06-10 2019-03-13 任天堂株式会社 ゲーム装置、ゲーム制御方法およびゲームプログラム
US10444339B2 (en) * 2016-10-31 2019-10-15 Trackman A/S Skid and roll tracking system
EP3619922B1 (en) * 2017-05-04 2022-06-29 Dolby International AB Rendering audio objects having apparent size
EP3435331A1 (en) * 2017-07-25 2019-01-30 Elio Lorenzoni Assembly and method for managing a golf game
US10885242B2 (en) * 2017-08-31 2021-01-05 Microsoft Technology Licensing, Llc Collision detection with advanced position
US11096006B1 (en) * 2019-11-04 2021-08-17 Facebook Technologies, Llc Dynamic speech directivity reproduction
KR102249738B1 (ko) * 2020-09-29 2021-05-10 주식회사 골프존 가상 골프 시뮬레이션 장치 및 가상 골프 시뮬레이션 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080293488A1 (en) * 2007-05-21 2008-11-27 World Golf Tour, Inc. Electronic game utilizing photographs

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100634534B1 (ko) * 2005-01-22 2006-10-13 삼성전자주식회사 3차원 그래픽스 환경 상에서의 충돌 처리 방법 및 장치
KR100984048B1 (ko) * 2008-10-14 2010-09-30 한국전자통신연구원 파티클 유체 시뮬레이션에서의 강성체 상호작용 처리 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080293488A1 (en) * 2007-05-21 2008-11-27 World Golf Tour, Inc. Electronic game utilizing photographs

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A. R. Penner. ‘The Run of a Golf Ball.’ Canadian Journal of Physics, Vol. 80, 2002, pp. 931-940.*

Also Published As

Publication number Publication date
US20130158966A1 (en) 2013-06-20
KR20130068613A (ko) 2013-06-26

Similar Documents

Publication Publication Date Title
KR101694296B1 (ko) 회전하는 공의 충돌 시뮬레이션 방법
CN103143158B (zh) 一种提高斯诺克台球击中率的方法
Bjelica et al. Repulsion of the futsal ball depending on the pressure in it
Bjelica et al. Dependence of female ball in handball repulsion on the pressure within this sport
CN112423851B (zh) 用于优化运动球发射的系统和方法
KR20200085803A (ko) 골프 공 추적 시스템
Bjelica et al. Dependence of basketball repulsion on the pressure within this sport
US10159885B2 (en) Swing analysis system using angular rate and linear acceleration sensors
Bjelica et al. Pressure dependence of handball repulsion within this sport
US10137347B2 (en) Golf clubs and golf club heads having a sensor
KR20190031111A (ko) 가상 테니스 시뮬레이션 시스템, 이에 이용되는 센싱장치 및 센싱방법
Bjelica et al. Dependence of Football Repulsion on the Pressure Within This Sport
Hong et al. Unsteady aerodynamic force on a knuckleball in soccer
JP2017525521A (ja) マルチセンサートラッキングシステムおよび方法
CN105999677B (zh) 一种可联网的便携式高尔夫模拟系统及模拟方法
CN108579080A (zh) 混合现实环境下实体球拍与虚拟球的交互实现方法及系统
Bjelica et al. Volleyball elastic properties depending on ball pressure
Cross Calculations of groundstroke trajectories in tennis
Drane et al. The behavior of golf ball putting on artificial turf
TWI764768B (zh) 桌球軌跡預測方法及其系統
Deprá et al. Fluid mechanics analysis in volleyball services
CN114611175A (zh) 一种台球运动的模拟方法、系统及电子设备
Hong et al. Aerodynamics of Knuckling Effect Shot Using Kick-robot.
KR100882597B1 (ko) 체감형 게이트볼 게임시스템
Okubo et al. Estimation of rebound position in basketball

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant