KR102362465B1 - Programs, electronic devices, and methods - Google Patents

Programs, electronic devices, and methods Download PDF

Info

Publication number
KR102362465B1
KR102362465B1 KR1020207031560A KR20207031560A KR102362465B1 KR 102362465 B1 KR102362465 B1 KR 102362465B1 KR 1020207031560 A KR1020207031560 A KR 1020207031560A KR 20207031560 A KR20207031560 A KR 20207031560A KR 102362465 B1 KR102362465 B1 KR 102362465B1
Authority
KR
South Korea
Prior art keywords
axis
angle
determined
determining
data points
Prior art date
Application number
KR1020207031560A
Other languages
Korean (ko)
Other versions
KR20200138811A (en
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 가부시키가이샤 사이게임스
Publication of KR20200138811A publication Critical patent/KR20200138811A/en
Application granted granted Critical
Publication of KR102362465B1 publication Critical patent/KR102362465B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or 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
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/214Input arrangements for video game devices characterised by their sensors, purposes or types for locating contacts on a surface, e.g. floor mats or touch pads
    • A63F13/2145Input arrangements for video game devices characterised by their sensors, purposes or types for locating contacts on a surface, e.g. floor mats or touch pads the surface being also a display device, e.g. touch screens
    • 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/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/218Input arrangements for video game devices characterised by their sensors, purposes or types using pressure sensors, e.g. generating a signal proportional to the pressure applied by the player
    • 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/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/426Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving on-screen location information, e.g. screen coordinates of an area at which the player is aiming with a light gun
    • 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/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • 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/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • A63F13/5255Changing parameters of virtual cameras according to dedicated instructions from a player, e.g. using a secondary joystick to rotate the camera around a player's character
    • 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/90Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
    • A63F13/92Video game devices specially adapted to be hand-held while playing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/044Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by capacitive means
    • G06F3/0446Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by capacitive means using a grid-like structure of electrodes in at least two directions, e.g. using row and column electrodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04808Several contacts: gestures triggering a specific function, e.g. scrolling, zooming, right-click, when the user establishes several contacts with the surface simultaneously; e.g. using several fingers or a combination of fingers and pen

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Position Input By Displaying (AREA)

Abstract

가상 공간 내의 조작 대상 오브젝트를 제어함에 있어서, 보다 조작성을 높일 수 있는 프로그램을 제공한다. 본 발명은, 전자 장치에서 실행되는 프로그램이며, 해당 전자 장치에, 터치 패널로의 유저의 조작에 의하여 발생한 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하는 단계와, 보지되어 있는 데이터 포인트 중 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료하는 단계와, 보지되어 있는 데이터 포인트에 기초하여 회귀 직선의 기울기를 결정하는 단계와, 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정하는 단계와, 결정된 회귀 직선의 기울기 및 결정된 회전량에 기초하여, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하는 단계를 실행시킨다.A program capable of further enhancing operability in controlling an object to be manipulated in a virtual space is provided. The present invention is a program executed in an electronic device, and the data points displayed by the values of a first axis and a value of a second axis obtained based on a touch event generated by a user's operation on a touch panel are provided to the electronic device. The holding step, the step of terminating holding of the data points that have exceeded a predetermined holding time among the held data points, the steps of determining the slope of the regression line based on the held data points, and the held data Determining a rotation amount for rotating the determined slope of the regression line based on the displacement direction as a set of points, and based on the determined slope of the regression line and the determined rotation amount, the user controls the object to be manipulated in the virtual space. Execute the steps to determine the angle.

Description

프로그램, 전자 장치, 및 방법Programs, electronic devices, and methods

본 발명은, 프로그램 등에 관한 것이며, 특히, 터치 패널을 구비하는 전자 장치에서 실행되는 프로그램 등에 관한 것이다.The present invention relates to a program and the like, and more particularly, to a program executed in an electronic device having a touch panel.

최근의 터치 패널 기술의 향상에 수반하여, 터치 패널 상의 유저 인터페이스를 통하여 유저 입력을 행하는 전자 장치가 널리 보급되어 왔다. 그리고, 전자 장치에서 실행되는 게임에 있어서는, 종래형의 물리적인 콘트롤러에 의한 유저 입력을 대신하여, 전자 장치에 구비된 터치 패널을 통하여 유저 입력을 행하는 형태가 널리 보급되고 있다.BACKGROUND With the recent improvement of touch panel technology, electronic devices that perform user input through a user interface on a touch panel have become widespread. And, in a game executed in an electronic device, a form in which a user input is performed through a touch panel provided in the electronic device is widely used instead of a user input by a conventional physical controller.

특히, 스마트폰 등으로 대표되는 소형의 휴대형 전자 장치의 보급이 급속히 진행되고, 이러한 휴대형 전자 장치 상에서 실행되는 게임도 수많이 출시되고 있다. 이러한 상황에서, 터치 패널에 표시된 플레이어 캐릭터 등의 가상 오브젝트의 조작 방법에 대해서는, 예를 들면, 비특허 문헌 1에 나타내는 버추얼 패드에 관한 기술을 포함하여, 다양한 기술이 제안되고 있다.In particular, the spread of small portable electronic devices, such as smartphones, etc., is rapidly progressing, and a number of games executed on such portable electronic devices are also being released. In such a situation, various techniques have been proposed for a method of operating a virtual object such as a player character displayed on a touch panel, including, for example, the technique related to the virtual pad shown in Non-Patent Document 1.

예를 들면, 특허 문헌 1에는, 터치 패널을 구비하는 게임 장치이며, 유저의 터치 조작에 따라 원점을 설정하여 조이스틱을 본뜬 조작을 행할 수 있는 게임 장치 또는 프로그램이 개시되어 있다. 해당 게임 장치는, 터치 패널이 터치를 검출하고 있지 않은 상태에서 검출한 상태로 변화된 경우에 검출을 개시했을 때의 좌표에 기초하여 기준 좌표를 설정하고, 그 후, 터치 검출을 계속하는 경우, 그 후에 검출한 좌표에 기초하여 지시 좌표를 설정한다. 그리고 해당 게임 장치는, 기준 좌표로부터 지시 좌표로의 벡터의 방향이 조이스틱을 넘어뜨리고 있는 방향, 벡터의 크기가 조이스틱이 넘어뜨려진 상태라고 인식함으로써, 가상 조이스틱을 실현하고, 가상 오브젝트의 조작을 실현하고 있다.For example, Patent Document 1 discloses a game device or program that is provided with a touch panel, and can set an origin in response to a user's touch operation and perform operations imitating a joystick. The game device sets reference coordinates based on the coordinates at which detection was started when the touch panel changes from a non-detecting state to a detected state, and thereafter, when touch detection is continued, the Then, the indicated coordinates are set based on the detected coordinates. And the game device realizes a virtual joystick and realizes operation of a virtual object by recognizing that the direction of the vector from the reference coordinates to the indicated coordinates is the direction in which the joystick is tilted, and the magnitude of the vector is the state that the joystick is in a downed state. are doing

일본 특허 등록 공보 제3734820호Japanese Patent Registration Publication No. 3734820

Matthias Baldauf, Peter Frohlich, Florence Adegeye, and Stefan Suette. 2015. Investigating On-Screen Gamepad Designs for Smartphone-Controlled Video Games. ACM Trans. Multimedia Comput. Commun. Appl. 12, 1s, Article 22 (October 2015), 21 pages. DOI: https://doi.org/10.1145/2808202Matthias Baldauf, Peter Frohlich, Florence Adegeye, and Stefan Suette. 2015. Investigating On-Screen Gamepad Designs for Smartphone-Controlled Video Games. ACM Trans. Multimedia Comput. Commun. Appl. 12, 1s, Article 22 (October 2015), 21 pages. DOI: https://doi.org/10.1145/2808202

특허 문헌 1에 도시하는 종래 기술에 있어서, 유저는, 터치 패널 상의 한 개소를 손가락으로 접촉하여 게임 장치에 기준 좌표를 인식시키고, 접촉한 채로 그 손가락을 슬라이드시켜, 슬라이드 후의 손가락의 접촉 위치에 의하여 게임 장치에 지시 좌표를 인식시킨다. 이와 같이 구성되는 종래 기술은, 유저가 방향을 입력할 때, 기준 좌표로부터 지시 좌표까지 유의한 거리를 생성할 필요가 있으므로, 높은 응답성을 실현하는 것은 어려웠다. 예를 들면, 유저가 가상 조이스틱을 크게 넘어뜨린 조작을 행하고자 하는 경우, 크게 넘어뜨린 조이스틱이 넘어뜨려진 상태에 대응하는 기준 좌표로부터 지시 좌표로의 벡터의 크기를 생성할 필요가 있었다.In the prior art shown in Patent Document 1, the user touches a point on the touch panel with a finger to make the game device recognize the reference coordinates, slides the finger while it is in contact, and determines the contact position of the finger after sliding. The game device recognizes the pointing coordinates. In the prior art constituted in this way, when a user inputs a direction, it is necessary to generate a significant distance from the reference coordinates to the indicated coordinates, so it is difficult to realize high responsiveness. For example, when the user intends to perform an operation in which the virtual joystick is greatly knocked over, it is necessary to generate the magnitude of the vector from the reference coordinates corresponding to the state in which the greatly knocked down joystick is knocked over to the pointing coordinates.

따라서, 터치 패널에 표시된, 가상 공간 상에 배치된 가상 오브젝트를 제어하는 조작 방법으로서, 예를 들면, 보다 고속으로 직감적인 조작 방법의 실현이 요구되고 있다. 더 일반화하면, 가상 공간 내에 배치되고, 유저의 조작 대상이 될 수 있는 오브젝트인 조작 대상 오브젝트를 제어하는 조작 방법으로서, 보다 조작성이 높은 조작 방법의 실현이 요구되고 있다.Therefore, as an operation method for controlling a virtual object displayed on a touch panel and arranged on a virtual space, for example, realization of an intuitive operation method at a higher speed is demanded. More generalized, as an operation method for controlling an operation target object, which is an object that is arranged in a virtual space and can be an operation target of a user, realization of an operation method with higher operability is required.

본 발명은, 이러한 과제를 해결하기 위하여 이루어진 것이며, 가상 공간에 있어서의 조작 대상 오브젝트를 제어함에 있어서, 보다 조작성을 높일 수 있는 프로그램 등을 제공하는 것을 주목적으로 한다.The present invention has been made in order to solve such a problem, and a main object of the present invention is to provide a program or the like that can further enhance operability when controlling an operation target object in a virtual space.

상기의 목적을 달성하기 위하여, 본 발명의 일 태양으로서의 프로그램은, 터치 패널을 구비하는 전자 장치에서 실행되는 프로그램이며, 해당 전자 장치에, 상기 터치 패널로의 유저의 조작에 의하여 발생한 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하는 단계와, 상기 보지되어 있는 데이터 포인트 중 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료하는 단계와, 상기 보지되어 있는 데이터 포인트에 기초하여 회귀 직선의 기울기를 결정하는 단계와, 상기 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여 상기 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정하는 단계와, 상기 결정된 회귀 직선의 기울기 및 상기 결정된 회전량에 기초하여, 상기 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하는 단계를 실행시키는 것을 특징으로 한다.In order to achieve the above object, a program as an aspect of the present invention is a program executed in an electronic device having a touch panel, and based on a touch event generated by a user's manipulation of the touch panel in the electronic device holding data points indicated by the values of the first axis and the values of the second axis obtained by Determining the slope of the regression line based on the obtained data points, and determining the rotation amount for rotating the determined slope of the regression line based on the displacement direction as the set of held data points; Based on the inclination of the regression straight line and the determined rotation amount, it is characterized in that the user determines an angle for controlling the manipulation target object in the virtual space.

또한, 본 발명에 있어서 바람직하게는, 상기 회전량을 결정하는 단계는, 상기 보지되어 있는 데이터 포인트에 있어서의 시계열적으로 전후하는 데이터 포인트의 변위 방향에 기초하여, 상기 조작 대상 오브젝트를 제어하기 위한 각도를 결정함에 있어서, 상기 결정된 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다.Preferably, in the present invention, the step of determining the rotation amount comprises: controlling the manipulation target object based on the displacement direction of the data points back and forth in time series in the held data point. In determining the angle, a rotation amount indicating whether to rotate 180 degrees with respect to the determined inclination is determined.

또한, 본 발명에 있어서 바람직하게는, 상기 프로그램은, 상기 전자 장치에, 상기 보지되어 있는 데이터 포인트에 있어서의 상기 제1 축의 값의 변위량 및 상기 제2 축의 값의 변위량에 기초하여, 독립 변수의 축으로서 해당 제1 축 및 해당 제2 축 중 어느 한 쪽의 축을 결정하는 단계와, 다른 한 쪽의 축을 종속 변수의 축으로서 결정하는 단계를 더 실행시키고, 상기 회귀 직선의 기울기를 결정하는 단계는, 상기 결정된 독립 변수의 축 및 종속 변수의 축에 더 기초하여, 회귀 직선의 기울기를 결정한다.Preferably, in the present invention, the program provides, in the electronic device, based on the amount of displacement of the value of the first axis and the amount of displacement of the value of the second axis in the data point held in the electronic device, of the independent variable. Further executing the steps of determining one of the first axis and the corresponding second axis as an axis, and determining the other axis as an axis of the dependent variable, and determining the slope of the regression line, , further based on the determined axis of the independent variable and the axis of the dependent variable, determine the slope of the regression line.

또한, 본 발명에 있어서 바람직하게는, 상기 어느 한 쪽의 축을 결정하는 단계는, 상기 보지되어 있는 데이터 포인트에 있어서의, 상기 제1 축의 최대값과 최소값의 차분값 및 상기 제2 축의 최대값과 최소값의 차분값에 기초하여, 독립 변수의 축으로서 상기 어느 한 쪽의 축을 결정한다.Preferably, in the present invention, in the step of determining either axis, the difference between the maximum value and the minimum value of the first axis and the maximum value of the second axis in the held data point Based on the difference between the minimum values, one of the axes is determined as the axis of the independent variable.

또한, 본 발명에 있어서 바람직하게는, 상기 어느 한 쪽의 축을 결정하는 단계는, 상기 보지되어 있는 데이터 포인트에 있어서의, 상기 제1 축의 최대값과 최소값의 차분값에 대하여 가중치 부여를 행한 값 및 상기 제2 축의 최대값과 최소값의 차분값의 크기를 비교함으로써, 독립 변수의 축으로서 상기 어느 한 쪽의 축을 결정한다.Preferably, in the present invention, the step of determining either axis comprises: a value obtained by weighting the difference between the maximum value and the minimum value of the first axis in the held data point; By comparing the magnitude of the difference between the maximum value and the minimum value of the second axis, either axis is determined as the axis of the independent variable.

또한, 본 발명에 있어서 바람직하게는, 상기 회전량을 결정하는 단계는, 상기 보지되어 있는 데이터 포인트에 있어서의 시계열적으로 전후하는, 상기 결정된 독립 변수의 축의 값의 차분값의 음양의 수량을 비교함으로써, 상기 조작 대상 오브젝트를 제어하기 위한 각도를 결정함에 있어서, 상기 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다.Preferably, in the present invention, the step of determining the rotation amount compares the positive and negative quantities of the difference values of the values of the axes of the determined independent variables before and after chronologically in the held data point. Thus, in determining the angle for controlling the manipulation target object, a rotation amount indicating whether to rotate 180 degrees with respect to the determined inclination of the regression straight line is determined.

또한, 본 발명에 있어서 바람직하게는, 상기 회귀 직선의 기울기를 결정하는 단계는, 상기 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 평균 및 종속 변수의 평균을 결정하는 단계와, 상기 결정된 평균을 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 편차 및 종속 변수의 편차를 결정하는 단계와, 상기 결정된 독립 변수의 편차를 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의 독립 변수의 분산을 결정하는 단계와, 상기 결정된 독립 변수의 편차 및 종속 변수의 편차를 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의 공분산을 결정하는 단계와, 상기 결정된 공분산을 상기 결정된 독립 변수의 분산으로 나눔으로써 회귀 직선의 기울기를 결정하는 단계를 포함한다.Preferably, in the present invention, the step of determining the slope of the regression line comprises: determining the mean of the independent variable and the mean of the dependent variable at the retained data point; determining the deviation of the independent variable and the deviation of the dependent variable in the retained data point using determining a variance; using the determined variance of the independent variable and the variance of the dependent variable to determine the covariance at the retained data points; dividing the determined covariance by the variance of the determined independent variable and determining the slope of the regression line.

또한, 본 발명에 있어서 바람직하게는, 상기 제1 축은, 상기 터치 패널의 센서가 배열되는 방향의 짧은 쪽 방향을 나타내는 X 축이며, 상기 제2 축은, 상기 터치 패널의 센서가 배열되는 방향의 긴 쪽 방향을 나타내고, 상기 제1 축에 직교하는 Y 축이며, 상기 회귀 직선의 기울기를 결정하는 단계는, 상기 결정된 독립 변수의 축이 상기 제2 축인 경우, 상기 결정된 공분산을 상기 결정된 독립 변수의 분산으로 나눔으로써 결정된 회귀 직선의 기울기에 대응하는 각도를, 90 도로부터 뺌으로써 회귀 직선의 기울기를 결정한다.In addition, preferably, in the present invention, the first axis is an X axis indicating a short direction in a direction in which the sensors of the touch panel are arranged, and the second axis is a long axis in a direction in which the sensors of the touch panel are arranged. In the case where the axis of the determined independent variable is the second axis, the determined covariance is calculated as the variance of the determined independent variable in the step of determining the slope of the regression line. The slope of the regression line is determined by subtracting the angle corresponding to the slope of the regression line determined by dividing by 90 degrees.

또한, 본 발명에 있어서 바람직하게는, 상기 제1 축은, 상기 터치 패널의 센서가 배열되는 방향의 짧은 쪽 방향을 나타내는 X 축이며, 상기 제2 축은, 상기 터치 패널의 센서가 배열되는 방향의 긴 쪽 방향을 나타내고, 상기 제1 축에 직교하는 Y 축이다.In addition, preferably, in the present invention, the first axis is an X axis indicating a short direction in a direction in which the sensors of the touch panel are arranged, and the second axis is a long axis in a direction in which the sensors of the touch panel are arranged. side direction and is the Y-axis orthogonal to the first axis.

또한, 본 발명에 있어서 바람직하게는, 상기 각도를 결정하는 단계는, 미리 정해진 처리 시간마다 각도를 결정한다.Further, in the present invention, preferably, the step of determining the angle determines the angle for each predetermined processing time.

또한, 상기의 목적을 달성하기 위하여, 본 발명의 일 태양으로서의 한 조의 프로그램은, 상기의 프로그램을 포함하는, 상기 터치 패널을 구비하는 상기 전자 장치에서 실행되는 게임을 위한 한 조의 프로그램이며, 상기 미리 정해진 처리 시간은, 게임을 실행하기 위한 프레임 레이트에 대응하는 시간이며, 상기 미리 정해진 처리 시간마다 결정되는 각도에 기초하여, 상기 미리 정해진 처리 시간마다 각도 및 크기를 결정하는 단계와, 상기 미리 정해진 처리 시간마다 결정되는 각도 및 크기에 기초하여, 상기 터치 패널에 표시되는 상기 조작 대상 오브젝트를 제어하는 단계를 실행시키는 것을 특징으로 한다.In addition, in order to achieve the above object, a set of programs as an aspect of the present invention is a set of programs for a game executed in the electronic device having the touch panel including the above program, The predetermined processing time is a time corresponding to a frame rate for executing the game, and based on the angle determined for each predetermined processing time, determining an angle and a size for each predetermined processing time; It is characterized in that the step of controlling the manipulation target object displayed on the touch panel is executed based on the angle and size determined for each time.

또한, 상기의 목적을 달성하기 위하여, 본 발명의 일 태양으로서의 한 조의 프로그램은, 상기의 프로그램을 포함하는, 상기 터치 패널을 구비하는 상기 전자 장치에서 실행되는 게임을 위한 한 조의 프로그램이며, 상기 미리 정해진 처리 시간은, 게임을 실행하기 위한 프레임 레이트에 대응하는 시간이며, 상기 미리 정해진 처리 시간마다 결정되는 각도에 기초하여, 상기 미리 정해진 처리 시간마다 각도 및 크기를 결정하는 단계와, 상기 미리 정해진 처리 시간마다 결정되는 각도 및 크기에 기초하여, 상기 터치 패널에 표시되는 게임 화상을 촬영하기 위한 상기 조작 대상 오브젝트인 가상 카메라를 제어하는 단계를 실행시키는 것을 특징으로 한다.In addition, in order to achieve the above object, a set of programs as an aspect of the present invention is a set of programs for a game executed in the electronic device having the touch panel including the above program, The predetermined processing time is a time corresponding to a frame rate for executing the game, and based on the angle determined for each predetermined processing time, determining an angle and a size for each predetermined processing time; It is characterized in that the step of controlling the virtual camera which is the operation target object for photographing the game image displayed on the touch panel is executed based on the angle and the size determined for each time.

또한, 상기의 목적을 달성하기 위하여, 본 발명의 일 태양으로서의 전자 장치는, 터치 패널을 구비하는 전자 장치이며, 상기 터치 패널로의 유저의 조작에 의하여 발생한 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하고, 상기 보지되어 있는 데이터 포인트 중 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료하고, 상기 보지되어 있는 데이터 포인트에 기초하여 회귀 직선의 기울기를 결정하고, 상기 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여 상기 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정하고, 상기 결정된 회귀 직선의 기울기 및 상기 결정된 회전량에 기초하여, 상기 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하는 것을 특징으로 한다.Further, in order to achieve the above object, an electronic device as an aspect of the present invention is an electronic device including a touch panel, and the first axis Hold the data point indicated by the value and the value of the second axis, end the holding of the data point exceeding a predetermined holding time among the held data points, and calculate the regression line based on the held data point. a slope is determined, and a rotation amount for rotating the determined slope of the regression line is determined based on a displacement direction as a set of held data points, and based on the determined slope of the regression line and the determined rotation amount, the It is characterized in that the user determines an angle for controlling the manipulation target object in the virtual space.

또한, 상기의 목적을 달성하기 위하여, 본 발명의 일 태양으로서의 방법은, 터치 패널을 구비하는 전자 장치에서 실행되는 방법이며, 상기 터치 패널로의 유저의 조작에 의하여 발생한 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하는 단계와, 상기 보지되어 있는 데이터 포인트 중 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료하는 단계와, 상기 보지되어 있는 데이터 포인트에 기초하여 회귀 직선의 기울기를 결정하는 단계와, 상기 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여 상기 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정하는 단계와, 상기 결정된 회귀 직선의 기울기 및 상기 결정된 회전량에 기초하여, 상기 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하는 단계를 가지는 것을 특징으로 한다.In addition, in order to achieve the above object, a method as an aspect of the present invention is a method executed in an electronic device having a touch panel, and is obtained based on a touch event generated by a user's operation on the touch panel. holding data points indicated by the values of the first axis and the values of the second axis; and terminating holding of data points that have exceeded a predetermined holding time among the held data points; determining the slope of the regression line based on the point; and determining an angle for the user to control the manipulation target object in the virtual space based on the inclination and the determined rotation amount.

본 발명에 의하면, 가상 공간에 있어서의 조작 대상 오브젝트를 제어함에 있어서, 보다 조작성을 높일 수 있다.ADVANTAGE OF THE INVENTION According to this invention, when controlling the operation target object in virtual space, operability can be improved more.

도 1은, 본 발명의 일 실시 형태에 의한 전자 장치의 하드웨어 구성을 도시하는 블록도이다.
도 2는, 본 발명의 일 실시 형태에 의한 전자 장치의 기능 블록도이다.
도 3은, 본 실시 형태의 제1 축 및 제2 축으로 이루어지는 좌표 축을 도시하는 도면이다.
도 4는, 각도 결정부가 결정되는 각도와 각도에 대응하는 방향의 일예를 설명하는 도면이다.
도 5는, 시간(t1)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다.
도 6은, 시간(t1)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다.
도 7은, 도 5에 도시하는 데이터 포인트의 집합으로부터 구한 회귀 직선을 도시하는 도면이다.
도 8은, 도 7에 도시하는 회귀 직선의 기울기를 이용하여 함수(aop(x, y))가 산출한 각도를 도시하는 도면이다.
도 9는, 시간(t2)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다.
도 10은, 도 9에 도시하는 회귀 직선의 기울기를 이용하여 함수(aop(x, y))가 산출한 각도를 도시하는 도면이다.
도 11은, 시간(t3)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다.
도 12는, 시간(t3)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다.
도 13은, 도 11에 도시하는 데이터 포인트의 집합으로부터 구한 회귀 직선 및 해당 회귀 직선의 기울기를 이용하여 함수(aop(x, y))가 산출한 각도를 도시하는 도면이다.
도 14는, 시간(t4)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다.
도 15는, 시간(t4)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다.
도 16은, 도 14에 도시하는 데이터 포인트의 집합으로부터 구한 회귀 직선을 도시하는 도면이다.
도 17은, 도 16에 도시하는 회귀 직선의 기울기를 이용하여 함수(aop(x, y))가 산출한 각도를 도시하는 도면이다.
도 18은, 본 발명의 일 실시 형태에 의한 전자 장치가 데이터 포인트의 집합으로부터 가상 캐릭터를 제어하는 모습을 도시하는 도면이다.
도 19는, 본 발명의 일 실시 형태에 의한 각도 결정부의 정보 처리의 플로우차트를 도시하는 도면이다.
도 20은, 본 발명의 일 실시 형태에 의한 전자 장치가 표시하는 화상을 촬영하는 가상 공간 내에 배치된 가상 카메라를 나타내는 도면이다.
1 is a block diagram showing a hardware configuration of an electronic device according to an embodiment of the present invention.
2 is a functional block diagram of an electronic device according to an embodiment of the present invention.
3 is a diagram illustrating a coordinate axis composed of a first axis and a second axis according to the present embodiment.
4 is a view for explaining an example of an angle determined by an angle determining unit and a direction corresponding to the angle.
Fig. 5 is a diagram showing an example of data points held by the data point buffer at time t1.
6 is a diagram showing an example of data points held by the data point buffer at time t1.
FIG. 7 is a diagram showing a regression line obtained from the set of data points shown in FIG. 5 .
FIG. 8 is a diagram illustrating an angle calculated by the function (aop(x, y)) using the slope of the regression line shown in FIG. 7 .
9 is a diagram showing an example of data points held by the data point buffer at time t2.
FIG. 10 is a diagram illustrating an angle calculated by the function (aop(x, y)) using the slope of the regression line shown in FIG. 9 .
11 is a diagram showing an example of data points held by the data point buffer at time t3.
12 is a diagram showing an example of data points held by the data point buffer at time t3.
Fig. 13 is a diagram showing the angle calculated by the function (aop(x, y)) using the regression line obtained from the set of data points shown in Fig. 11 and the slope of the regression line.
14 is a diagram showing an example of data points held by the data point buffer at time t4.
15 is a diagram showing an example of data points held by the data point buffer at time t4.
FIG. 16 is a diagram showing a regression line obtained from the set of data points shown in FIG. 14 .
FIG. 17 is a diagram illustrating an angle calculated by the function (aop(x, y)) using the slope of the regression line shown in FIG. 16 .
18 is a diagram illustrating a state in which an electronic device according to an embodiment of the present invention controls a virtual character from a set of data points.
19 is a diagram showing a flowchart of information processing of an angle determining unit according to an embodiment of the present invention.
20 is a diagram illustrating a virtual camera disposed in a virtual space for capturing an image displayed by an electronic device according to an embodiment of the present invention.

이하, 도면을 참조하여, 본 발명의 실시 형태를 설명한다. 각 도면에서, 동일한 부호는, 특별히 언급이 없는 한, 동일 또는 상당 부분을 도시하는 것으로 하고, 설명의 편의 상, 도면의 종횡의 축척을 실제의 것과는 상이하게 나타내는 경우가 있다. 또한, 설명의 편의 상, 필요 이상으로 상세한 설명은 생략하는 경우가 있다. 예를 들면, 이미 잘 알려진 사항의 상세 설명이나 실질적으로 동일한 구성에 대한 중복 설명을 생략하는 경우가 있다.EMBODIMENT OF THE INVENTION Hereinafter, embodiment of this invention is described with reference to drawings. In each drawing, the same reference numerals denote the same or equivalent parts unless otherwise specified, and for convenience of explanation, the vertical and horizontal scales of the drawings may be different from the actual ones. In addition, for the convenience of description, more detailed description may be abbreviate|omitted than necessary. For example, detailed descriptions of well-known items or redundant descriptions of substantially the same components may be omitted.

본 발명의 일 실시 형태에 의한 전자 장치(10)는, 가상 공간에 배치된 가상적인 오브젝트를 유저에게 제시하고, 게임을 진행하는 게임 어플리케이션이 인스톨되어 있다. 본 실시 형태의 전자 장치(10)는, 해당 게임 어플리케이션이 실행되면, 유저의 조작에 따라, 가상 공간 내의 유저의 조작 대상의 가상적인 오브젝트인 조작 대상 오브젝트를 제어하기 위한 가상적인 콘트롤러(가상 콘트롤러)를 제공한다. 가상 공간은, 해당 게임 어플리케이션에 의하여 정해지는 것이며, 2 차원 공간일 수도 있으며, 3 차원 공간일 수도 있다. 예를 들면, 가상적인 오브젝트는, 가상 공간에 배치된 캐릭터 또는 아이템이다. 예를 들면, 조작 대상 오브젝트의 제어란, 가상 공간에 배치된 캐릭터 또는 아이템의 동작의 제어이다.In the electronic device 10 according to an embodiment of the present invention, a game application for presenting a virtual object arranged in a virtual space to a user and playing a game is installed. The electronic device 10 of the present embodiment is a virtual controller (virtual controller) for controlling an operation target object that is a virtual object of the user's operation target in the virtual space according to the user's operation when the game application is executed provides The virtual space is determined by the game application, and may be a two-dimensional space or a three-dimensional space. For example, the virtual object is a character or item arranged in a virtual space. For example, the control of the operation target object is control of the motion of a character or item arranged in the virtual space.

설명의 편의 상, 본 실시 형태에서는, 전자 장치(10)에는 상기와 같은 게임 어플리케이션이 인스톨되어 있는 것으로 하지만, 이에 한정되지 않는다. 전자 장치(10)는, 유저의 조작에 따라, 조작 대상 오브젝트를 제어하는 것이 가능한 어플리케이션을 실장하고 있으면 된다. 예를 들면, 전자 장치(10)에는, 게임 어플리케이션 대신에, 또는 이에 추가하여, 유저의 조작에 따라 조작 대상 오브젝트를 동작시키는 입력 지원 어플리케이션, 또는 시뮬레이션 어플리케이션이 실장되어도 된다. 본 실시 형태의 전자 장치(10)가 제공하는 가상 콘트롤러는, 유저의 입력으로서 방향과 크기가 필요한 입력에 이용할 수 있다. 이하의 설명에서, 어플리케이션은, 어플리케이션 프로그램 전반을 의미하는 것이며, 스마트폰이나 태블릿 단말에 인스톨되는 앱을 의미할 수 있다.For convenience of explanation, in the present embodiment, it is assumed that the above game application is installed in the electronic device 10 , but the present invention is not limited thereto. The electronic device 10 may implement an application capable of controlling an operation target object according to a user's operation. For example, instead of or in addition to the game application, an input support application or a simulation application for operating an operation target object according to a user's operation may be mounted on the electronic device 10 . The virtual controller provided by the electronic device 10 of the present embodiment can be used for input requiring a direction and a size as a user input. In the following description, an application means an overall application program, and may mean an app installed on a smartphone or tablet terminal.

도 1은, 본 발명의 일 실시 형태에 의한 전자 장치(10)의 하드웨어 구성을 도시하는 블록도이다. 전자 장치(10)는, 프로세서(11), 입력 장치(12), 표시 장치(13), 기억 장치(14), 및 통신 장치(15)를 구비한다. 이러한 각 구성 장치는 버스(16)에 의하여 접속된다. 또한, 버스(16)와 각 구성 장치의 사이에는, 필요에 따라 인터페이스가 개재되어 있는 것으로 한다. 본 실시 형태에서, 전자 장치(10)는 스마트폰이다. 단, 전자 장치(10)는, 상기의 구성을 구비하는 것이라면, 태블릿형 컴퓨터, 터치 패드 등의 접촉형 입력 장치를 구비하는 컴퓨터 등의 단말로 할 수 있다.1 is a block diagram showing a hardware configuration of an electronic device 10 according to an embodiment of the present invention. The electronic device 10 includes a processor 11 , an input device 12 , a display device 13 , a storage device 14 , and a communication device 15 . Each of these constituent devices is connected by a bus 16 . In addition, it is assumed that an interface is interposed between the bus 16 and each component as needed. In this embodiment, the electronic device 10 is a smartphone. However, the electronic device 10 may be a terminal such as a tablet computer or a computer equipped with a touch input device such as a touch pad, as long as it has the above configuration.

프로세서(11)는, 전자 장치(10) 전체의 동작을 제어한다. 예를 들면, 프로세서(11)는, CPU이다. 또한, 프로세서(11)로서는, MPU 등의 전자 회로가 이용되어도 된다. 프로세서(11)는, 기억 장치(14)에 저장되어 있는 프로그램 또는 데이터를 읽어들여 실행함으로써, 다양한 처리를 실행한다. 하나의 예에서는, 프로세서(11)는 복수의 프로세서로 구성된다.The processor 11 controls the overall operation of the electronic device 10 . For example, the processor 11 is a CPU. In addition, as the processor 11, an electronic circuit such as an MPU may be used. The processor 11 executes various processes by reading and executing the program or data stored in the storage device 14 . In one example, the processor 11 is comprised of a plurality of processors.

입력 장치(12)는, 전자 장치(10)에 대한 유저로부터의 입력을 받아들이는 유저 인터페이스이며, 예를 들면, 터치 패널, 터치 패드, 키보드, 또는 마우스이다. 표시 장치(디스플레이)(13)는, 프로세서(11)의 제어에 따라, 어플리케이션 화면 등을 전자 장치(10)의 유저에게 표시한다. 본 실시 형태에서는, 스마트폰인 전자 장치(10)는 입력 장치(12)로서 터치 패널(17)을 구비하고, 터치 패널(17)은 표시 장치(13)로서도 기능하며, 입력 장치(12)와 표시 장치(13)는 일체가 된 구조이다. 본 실시 형태의 터치 패널(17)은, 투영형 정전 용량 방식 터치 패널이지만, 동등한 기능을 가지는 디바이스가 있다면, 그것을 이용하여도 된다.The input device 12 is a user interface that receives an input from a user to the electronic device 10 , and is, for example, a touch panel, a touch pad, a keyboard, or a mouse. The display device (display) 13 displays an application screen or the like to the user of the electronic device 10 under the control of the processor 11 . In the present embodiment, the electronic device 10 that is a smartphone includes a touch panel 17 as the input device 12 , the touch panel 17 also functions as the display device 13 , and the input device 12 and The display device 13 has an integrated structure. Although the touch panel 17 of this embodiment is a projection-type capacitive type touch panel, if there exists a device which has an equivalent function, you may use it.

기억 장치(14)는, 휘발성 메모리인 RAM 및 불휘발성 메모리인 ROM을 포함하는, 일반적인 스마트폰이 구비하는 기억 장치이다. 기억 장치(14)는, 외부 메모리를 포함할 수도 있다. 기억 장치(14)는, 게임 어플리케이션을 포함하는 각종 프로그램을 기억한다. 예를 들면, 기억 장치(14)는, 오퍼레이팅 시스템(OS), 미들웨어, 어플리케이션 프로그램, 이들 프로그램의 실행에 수반하여 참조될 수 있는 각종 데이터 등을 저장한다.The storage device 14 is a storage device included in a general smart phone, including RAM that is a volatile memory and ROM that is a nonvolatile memory. The storage device 14 may include an external memory. The storage device 14 stores various programs including game applications. For example, the storage device 14 stores an operating system (OS), middleware, application programs, various data that can be referred to along with the execution of these programs, and the like.

하나의 예에서는, 기억 장치(14)는, 주기억 장치 및 보조 기억 장치를 포함한다. 주기억 장치는, 정보의 고속의 읽고 쓰기가 가능한 휘발성의 기억 매체이며, 프로세서(11)가 정보를 처리할 때의 기억 영역 및 작업 영역으로서 이용된다. 보조 기억 장치는, 다양한 프로그램, 또는 각 프로그램의 실행 시에 프로세서(11)가 사용하는 데이터를 저장한다. 보조 기억 장치는, 예를 들면, 하드 디스크 장치이지만, 정보를 저장할 수 있는 것이라면, 어떠한 불휘발성 스토리지 또는 불휘발성 메모리여도 되며, 착탈 가능한 것이여도 상관없다.In one example, the storage device 14 includes a main storage device and an auxiliary storage device. The main memory device is a volatile storage medium capable of reading and writing information at high speed, and is used as a storage area and a work area when the processor 11 processes information. The auxiliary storage device stores various programs or data used by the processor 11 when each program is executed. The auxiliary storage device is, for example, a hard disk device, but may be any nonvolatile storage or nonvolatile memory, and may be removable as long as it can store information.

통신 장치(15)는, 네트워크를 통하여 서버 등의 다른 컴퓨터와의 사이에서 데이터의 송수신을 행한다. 예를 들면, 통신 장치(15)는, 이동 통신이나 무선 LAN 등의 무선통신을 행하여, 네트워크에 접속한다. 하나의 예에서는, 전자 장치(10)는, 통신 장치(15)에 의하여 프로그램을 서버로부터 다운로드하여 기억 장치(14)에 저장한다. 단, 통신 장치(15)는 기존의 유선 통신을 행해도 된다. 다른 컴퓨터와의 사이에서 데이터의 송수신을 행하지 않는 경우, 전자 장치(10)는 통신 장치(15)를 구비하지 않아도 된다.The communication device 15 transmits/receives data to and from another computer such as a server via a network. For example, the communication device 15 performs wireless communication such as mobile communication or wireless LAN to connect to a network. In one example, the electronic device 10 downloads a program from the server by the communication device 15 and stores it in the storage device 14 . However, the communication device 15 may perform existing wired communication. When data is not transmitted/received with another computer, the electronic device 10 does not need to include the communication device 15 .

도 2는, 본 발명의 일 실시 형태에 의한 전자 장치(10)의 기능 블록도이다. 전자 장치(10)는, 입력부(21), 표시부(22), 및 제어부(23)를 구비한다. 제어부(23)는, 각도 결정부(24), 상태 결정부(25), 및 어플리케이션부(26)를 구비한다. 본 실시 형태에서는, 프로그램이 프로세서(11)에 의하여 실행됨으로써, 이들 기능이 실현된다. 예를 들면, 실행되는 프로그램은, 기억 장치(14)에 기억되어 있는, 또는 통신 장치(15)를 통하여 수신한 프로그램이다. 이와 같이, 각종 기능이 프로그램 읽어들임에 의하여 실현되므로, 한 개의 파트(기능)의 일부 또는 전부를 다른 파트가 가지고 있어도 된다. 단, 각 기능의 일부 또는 전부를 실현하기 위한 전자 회로 등을 구성함으로써, 하드웨어에 의해서도 이들 기능은 실현되어도 된다.2 is a functional block diagram of an electronic device 10 according to an embodiment of the present invention. The electronic device 10 includes an input unit 21 , a display unit 22 , and a control unit 23 . The control unit 23 includes an angle determination unit 24 , a state determination unit 25 , and an application unit 26 . In the present embodiment, these functions are realized by executing the program by the processor 11 . For example, the program to be executed is a program stored in the storage device 14 or received via the communication device 15 . In this way, since various functions are realized by program reading, other parts may have some or all of one part (function). However, by configuring an electronic circuit or the like for realizing a part or all of each function, these functions may be realized also by hardware.

입력부(21)는, 입력 장치(12)를 이용하여 구성되는 것이며, 전자 장치(10)에 대한 유저로부터의 입력을 받아들인다. 본 실시 형태에서는, 입력부(21)는, 터치 패널(17)로의 유저의 터치 조작을 받아들여 터치 이벤트를 발생하는 것이며, 터치 패널(17)을 구비하는 스마트폰이 일반적으로 가지고 있는 터치 검출 기능을 이용할 수 있다.The input unit 21 is configured using the input device 12 , and receives an input from a user to the electronic device 10 . In the present embodiment, the input unit 21 receives a user's touch operation on the touch panel 17 to generate a touch event, and provides a touch detection function that a smartphone provided with the touch panel 17 generally has. Available.

표시부(22)는, 게임 어플리케이션 화면을 표시 장치(13)에 표시하고, 유저 조작에 따른 화면을 표시한다.The display unit 22 displays a game application screen on the display device 13 and displays a screen according to a user operation.

제어부(23)는, 가상 콘트롤러를 실현하는 것이다. 본 실시 형태에서는, 제어부(23)는 3 층 구조의 아키텍쳐를 채용하고, 각도 결정부(24), 상태 결정부(25), 및 어플리케이션부(26)가 각 층에 대응한다. 예를 들면, 제어부(23)는, 각 층에 대응하는 각 프로그램에 의하여 구성되는 한 조의 프로그램이 프로세서(11)에 의하여 실행됨으로써 실현된다.The control unit 23 realizes a virtual controller. In the present embodiment, the control unit 23 adopts a three-layered architecture, and the angle determining unit 24 , the state determining unit 25 , and the application unit 26 correspond to each layer. For example, the control unit 23 is realized by executing a set of programs constituted by each program corresponding to each layer by the processor 11 .

제어부(23)가 실현하는 가상 콘트롤러에 있어서의 각도 결정부(24)의 역할은, 물리적인 콘트롤러에 있어서의 콘트롤러 내부의 센서 IC 칩에 대응한다. 각도 결정부(24)는, 주로, 터치 패널(17)로의 유저의 터치 조작에 의하여 발생한 터치 이벤트를 이용하여, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하고, 상태 결정부(25)로 송출한다.The role of the angle determination unit 24 in the virtual controller realized by the control unit 23 corresponds to the sensor IC chip inside the controller in the physical controller. The angle determination unit 24 mainly uses a touch event generated by the user's touch operation on the touch panel 17 to determine an angle for the user to control the operation target object in the virtual space, and the state determination unit ( 25) is sent.

상태 결정부(25)의 역할은, 물리적인 콘트롤러에 있어서의 조작하는 콘트롤러 전체에 대응한다. 상태 결정부(25)는, 주로, 각도 결정부(24)로부터 송출된 각도를 이용하여, 터치 패널(17) 상의 유저의 터치 조작에 대응하는 벡터(각도 및 크기)를 결정하고, 어플리케이션부(26)로 송출한다.The role of the state determination unit 25 corresponds to the entire operating controller in the physical controller. The state determination unit 25 mainly uses the angle transmitted from the angle determination unit 24 to determine a vector (angle and size) corresponding to the user's touch operation on the touch panel 17, and the application unit ( 26) is sent.

어플리케이션부(26)는, 게임 내의 동작 등을 실장하는, 구체적인 게임 어플리케이션에 대응한다. 게임 어플리케이션은, 일반적인 게임 어플리케이션과 마찬가지로 하여, 프레임 레이트가 정해지고, 예를 들면, 프레임 레이트에 대응하는 시간마다, 메인 프로그램의 메인 루프를 처리한다. 프레임 레이트는, 일반적으로 30fps(프레임 매초) 또는 60fps이다.The application unit 26 corresponds to a specific game application that implements in-game operations and the like. The game application processes the main loop of the main program in the same manner as in the general game application, the frame rate is determined and, for example, every time corresponding to the frame rate. The frame rate is typically 30 fps (frames per second) or 60 fps.

각도 결정부(24)는, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위하여 필요한 각도를 결정한다. 하나의 바람직한 예에서는, 각도 결정부(24)는, 리얼타임으로 각도를 계산하는 수학 함수 라이브러리이며, 한편 단시간의 터치 이벤트의 열로부터의 각도 계산을 행하는, 통계 처리 알고리즘을 실장하는 소프트웨어 모듈이다. 터치 이벤트의 열은, 터치 패널(17) 상의 손가락의 움직임에 대응하는 것이다.The angle determining unit 24 determines an angle required for the user to control the manipulation target object in the virtual space. In one preferred example, the angle determining unit 24 is a mathematical function library that calculates an angle in real time, and on the other hand, is a software module that implements a statistical processing algorithm that calculates an angle from a sequence of short-time touch events. A row of touch events corresponds to a movement of a finger on the touch panel 17 .

기억 장치(14)는, 데이터 포인트 버퍼를 포함한다. 데이터 포인트 버퍼는, 각도 결정부(24)가 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하기 위한 버퍼이다.The storage device 14 includes a data point buffer. The data point buffer is a buffer for holding the data points indicated by the first axis value and the second axis value obtained by the angle determining unit 24 based on the touch event.

각도 결정부(24)는, 터치 패널(17)로의 유저의 조작에 의하여 발생한 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 데이터 포인트 버퍼에 보지한다. 여기서, 터치 이벤트는, 유저가 터치 패널(17)에 손가락을 접촉한 때(touchstart), 유저가 터치 패널(17)에 손가락을 접촉시킨 채로 움직인 때(touchmove), 유저가 터치 패널(17)로부터 손가락을 떼어 놓은 때(touchend) 등에 발생한다. 각도 결정부(24)는, 터치 이벤트가 발생할 때에, 터치 이벤트를 취득한다. 각도 결정부(24)는, 터치 이벤트를 취득할 때, 터치 패널(17) 상의 정전 용량이 변화한 위치에 대응하는, 2 개의 변수로 이루어지는 수치의 조(x, y)를 취득함과 동시에, (x, y)를 취득한 시간(t)을 취득하여, 3 개의 변수로 이루어지는 수치의 조(x, y, t)를 데이터 포인트 버퍼에 저장한다. 해당 2 개의 변수로 이루어지는 수치의 조의 데이터는, 터치 이벤트에 부수(附隨)하여 각도 결정부(24)가 취득하는 것이며, 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트에 대응하는 것이다. t는 (x, y)을 취득한 시간인 데이터 포인트 취득 시간을 나타내는 값이며, 상기와 같이 (x, y)와 대응되어 데이터 포인트 버퍼에 저장된다. 하나의 예에서는, t는, OS로부터 취득 가능한, 이른바 UNIX(등록 상표) 시간이라 불리는 정수값이거나, 또는 "2017/07/14 15:48:43.444"와 같은 문자열이다. 이하, 특별히 언급이 없는 한, 각도 결정부(24)가 데이터 포인트를 보지하는(또는 보지를 종료하는) 것은, 해당 데이터 포인트에 대응된 데이터 포인트 취득 시간(t)을 보지하는(또는 보지를 종료하는) 것을 포함한다.The angle determining unit 24 holds, in a data point buffer, data points displayed by the first axis value and the second axis value acquired based on a touch event generated by the user's operation on the touch panel 17 . Here, the touch event is when the user touches the touch panel 17 with his or her finger (touchstart), when the user moves with his or her finger in contact with the touch panel 17 (touchmove), when the user touches the touch panel 17 It occurs when the finger is separated from the touchend. The angle determining unit 24 acquires a touch event when a touch event occurs. When acquiring a touch event, the angle determining unit 24 acquires a set of numerical values (x, y) consisting of two variables corresponding to a position where the capacitance on the touch panel 17 changes, and at the same time, The time (t) at which (x, y) was acquired is acquired, and a set of values consisting of three variables (x, y, t) is stored in the data point buffer. The data of the numerical set consisting of the two variables is acquired by the angle determination unit 24 in conjunction with the touch event, and corresponds to the data point indicated by the value of the first axis and the value of the second axis. will be. t is a value indicating the data point acquisition time, which is the time at which (x, y) is acquired, and is stored in the data point buffer in correspondence with (x, y) as described above. In one example, t is an integer value, so-called UNIX (registered trademark) time, obtainable from the OS, or a character string such as "2017/07/14 15:48:43.444". Hereinafter, unless otherwise specified, the angle determining unit 24 holding (or terminating holding) a data point holds (or terminates holding) a data point acquisition time t corresponding to the data point. to do) include

본 실시 형태에서는, 설명의 편의 상, 제1 축 및 제2 축을 이하와 같이 정한다. 도 3은, 본 실시 형태의 제1 축 및 제2 축으로 이루어지는 좌표 축을 도시하는 도면이다. 제1 축은, 터치 패널(17)의 센서가 배열되는 방향에 실질적으로 평행한 방향 중, 짧은 쪽 방향을 나타내는 축이며, 터치 패널(17)의 짧은 변과 실질적으로 평행한 가로 축(x 축)이다. 제2 축은, 제1 축에 직교하고, 터치 패널(17)의 센서가 배열되는 방향에 실질적으로 평행한 방향 중, 긴 쪽 방향을 나타내는 축이며, 터치 패널(17)의 긴 변과 실질적으로 평행한 세로 축(y 축)이다. 이와 같이, 제1 축 및 제2 축은, 터치 패널(17)의 센서가 배열되는 방향에 실질적으로 평행하며, 터치 패널(17) 상의 위치는, 2 개의 축에 의하여 좌표 (x, y)로서 표시된다. 따라서, 본 실시 형태에서는, 데이터 포인트의 좌표 (x, y)는, 터치 패널(17) 상의 위치에 대응한다. 본 실시 형태에서는, 각도 결정부(24)는, 해당 좌표 (x, y)를, 데이터 포인트로서 데이터 포인트 버퍼에 보지한다. 도 3에 도시하는 좌표 설정은 일예이며, 터치 패널(17)의 센서 배열 또는 전자 장치(10)가 실장하는 프로그램에 의하여, 상기 예시와 상이하게 설정할 수 있다. 또한, 센서는, 예를 들면, 전극이다.In this embodiment, for convenience of description, a 1st axis|shaft and a 2nd axis|shaft are defined as follows. 3 is a diagram illustrating a coordinate axis composed of a first axis and a second axis according to the present embodiment. The first axis is an axis representing a shorter direction among directions substantially parallel to the direction in which the sensors of the touch panel 17 are arranged, and a horizontal axis (x axis) substantially parallel to the shorter side of the touch panel 17 . to be. The second axis is orthogonal to the first axis and represents a longitudinal direction among directions substantially parallel to the direction in which the sensors of the touch panel 17 are arranged, and is substantially parallel to the long side of the touch panel 17 . One vertical axis (y-axis). As such, the first axis and the second axis are substantially parallel to the direction in which the sensors of the touch panel 17 are arranged, and the position on the touch panel 17 is expressed as coordinates (x, y) by the two axes. do. Accordingly, in the present embodiment, the coordinates (x, y) of the data points correspond to positions on the touch panel 17 . In the present embodiment, the angle determining unit 24 holds the coordinates (x, y) as data points in the data point buffer. The coordinate setting shown in FIG. 3 is an example, and may be set differently from the above example by a sensor arrangement of the touch panel 17 or a program mounted by the electronic device 10 . Further, the sensor is, for example, an electrode.

도 4는, 도 3에 도시하는 바와 같이, 좌표 축이 정해진 경우의, 각도 결정부(24)가 결정하는 각도와, 각도에 대응하는 방향의 일예를 설명하는 도면이다. 제1 상한의 각도(31)는 방향(32)에 대응하고, 제2 상한의 각도(33)는 방향(34)에 대응하며, 제4 상한의 각도(35)는 방향(36)에 대응한다. 여기서, 방향(34)과 방향(36)의 기울기는 같으나, 방향이 역방향이므로, 각도(33)와 각도(35)는 180 도 상이함을 확인할 수 있다.FIG. 4 is a diagram for explaining an example of an angle determined by the angle determining unit 24 and a direction corresponding to the angle when the coordinate axis is determined as shown in FIG. 3 . The angle 31 of the first upper limit corresponds to the direction 32 , the angle 33 of the second upper limit corresponds to the direction 34 , and the angle 35 of the fourth upper limit corresponds to the direction 36 . . Here, although the inclinations of the directions 34 and 36 are the same, since the directions are opposite, it can be seen that the angles 33 and 35 are 180 degrees different from each other.

각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트 중, 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료한다. 예를 들면, 각도 결정부(24)는, 데이터 포인트의 데이터의 보지를 종료하는 경우, 해당 데이터를 삭제해도 되고, 해당 데이터를 무효화해도 되며, 또는 해당 데이터에 보지를 종료한 것을 도시하는 플래그를 관련지어 적절히 삭제하도록 해도 된다. 각도 결정부(24)는, 데이터 포인트 버퍼에 저장하는 데이터 포인트의 수명을 밀리 세컨드로 지정하는 변수(D)를 정한다. 변수(D)에 의하여 지정되는 시간이 미리 정해진 보지 시간에 대응한다. 단, 변수(D)의 값은 밀리 세컨드로 한정되지 않는다.The angle determining unit 24 ends the holding of data points that have exceeded a predetermined holding time among data points held in the data point buffer. For example, when the angle determination unit 24 finishes holding the data of the data point, the data may be deleted, the data may be invalidated, or a flag indicating that the holding of the data has been completed is added to the data. You may make it delete suitably in relation. The angle determining unit 24 determines a variable D designating the lifetime of the data point to be stored in the data point buffer in milliseconds. The time specified by the variable D corresponds to the predetermined holding time. However, the value of the variable D is not limited to milliseconds.

예를 들면, 각도 결정부(24)는, 한 개의 데이터 포인트를 데이터 포인트 버퍼에 저장하면, 해당 데이터 포인트의 저장되고 나서의 경과 시간을 감시하고, 계속적으로 변수(D)와 비교한다. 각도 결정부(24)는, 감시한 데이터 포인트의 경과 시간이 변수(D)를 초과했을 때, 해당 데이터 포인트를 데이터 포인트 버퍼의 보지를 종료한다. 이와 같이 하여, 각도 결정부(24)는, 데이터 포인트 버퍼가 보지하는 모든 데이터 포인트의 각각의 수명을 관리한다. 이 때, 각도 결정부(24)는, 데이터 포인트 취득 시간(t)을 이용하여, 경과 시간을 산출할 수 있다. 또한, 변수(D)를 초과했다고 판단한 때에는, 변수(D) 이상이라고 판단한 때를 의미할 수 있는 것으로 한다. 또한, 각도 결정부(24)가 관리하는 데이터 포인트의 경과 시간의 단위는, 변수(D)와 같다고 하는 것이 바람직하다.For example, when one data point is stored in the data point buffer, the angle determination unit 24 monitors the elapsed time since the data point is stored, and continuously compares it with the variable D. FIG. When the elapsed time of the monitored data point exceeds the variable D, the angle determination unit 24 ends holding the data point in the data point buffer. In this way, the angle determining unit 24 manages the respective lifetimes of all data points held by the data point buffer. At this time, the angle determination unit 24 may calculate the elapsed time using the data point acquisition time t. In addition, when it is judged that the variable (D) is exceeded, it shall be possible to mean the time of determining that it is more than the variable (D). In addition, it is preferable that the unit of the elapsed time of the data point managed by the angle determination part 24 is the same as the variable D.

예를 들면, 변수(D)에 165가 설정되었을 때, 각도 결정부(24)는, 데이터 포인트 버퍼에 저장한 데이터 포인트를 165 밀리 세컨드만큼 보지하고, 165 밀리 세컨드가 경과하면, 해당 데이터 포인트를 데이터 포인트 버퍼의 보지를 종료한다.For example, when 165 is set in the variable D, the angle determining unit 24 holds the data point stored in the data point buffer for 165 milliseconds, and when 165 milliseconds elapses, the data point is determined Ends holding of the data point buffer.

각도 결정부(24)는, 정기적으로 각도를 산출할 수 있는지의 여부를 판정한다. 각도 결정부(24)는, 각도를 산출 가능한 경우, 데이터 포인트 버퍼가 보지하는 데이터 포인트를 이용하여, 해당 데이터 포인트의 집합이 나타내는 각도를 산출하고, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도로서 결정한다. 이와 같이, 각도 결정부(24)는, 데이터 포인트의 집합이 나타내는 각도를 구함으로써, 터치 패널(17)에 대하여 터치 조작을 행한 유저가 의도하는 방향의 각도를 구하는 것이 가능해진다.The angle determination unit 24 determines whether or not the angle can be calculated periodically. When the angle can be calculated, the angle determining unit 24 calculates the angle indicated by the set of data points by using the data points held by the data point buffer, and allows the user to control the object to be manipulated in the virtual space. determined as an angle. In this way, by obtaining the angle indicated by the set of data points, the angle determining unit 24 can obtain the angle of the direction intended by the user who performed the touch operation on the touch panel 17 .

각도 결정부(24)는, 결정한 각도를 상태 결정부(25)로 출력한다. 각도 결정부(24)는, 결정한 각도를 상태 결정부(25)로 출력할 때, 예를 들면, angle 이벤트를 나타내는 정보와 함께 출력한다. 각도 결정부(24)는, 상태 결정부(25)로 직접 출력하지 않고, 상태 결정부(25)가 참조하는 기억 장치(14) 내의 메모리 영역에 결정한 각도 또는 angle 이벤트를 나타내는 정보를 저장해도 된다.The angle determination unit 24 outputs the determined angle to the state determination unit 25 . When the angle determination unit 24 outputs the determined angle to the state determination unit 25, for example, it is output together with information indicating an angle event. The angle determining unit 24 may store the determined angle or information indicating the angle event in a memory area in the storage device 14 referenced by the state determining unit 25 without directly outputting it to the state determining unit 25 . .

각도 결정부(24)는, 취득한 터치 이벤트가 touchstart인 때, start 이벤트를 상태 결정부(25)로 출력하고, 각도를 산출하지 않는다. 각도 결정부(24)는, 취득한 터치 이벤트가 touchend인 때, stop 이벤트를 상태 결정부(25)로 출력하고, 각도를 산출하지 않는다.The angle determination unit 24 outputs a start event to the state determination unit 25 when the acquired touch event is touchstart, and does not calculate the angle. The angle determination unit 24 outputs a stop event to the state determination unit 25 when the acquired touch event is touchend, and does not calculate the angle.

각도 결정부(24)는, 변수(B)를 정하고, 데이터 포인트 버퍼가 보지하는 데이터 포인트의 개수가 변수(B)의 수 이상인 경우, 해당 데이터 포인트를 이용하여 각도를 산출하고 결정한다. 각도 결정부(24)는, 데이터 포인트 버퍼가 보지하는 데이터 포인트의 개수가 변수(B)의 수 미만인 경우, 데이터 포인트의 집합이 나타내는 각도를 일정 정밀도 이상으로 산출하는 것이 불가능하므로, keep 이벤트를 상태 결정부(25)로 출력하고, 각도를 산출하지 않는다. 일반적으로는, 회귀 직선의 기울기를 구함에 있어서는 3 개 이상의 데이터 포인트가 있는 것이 바람직하므로, 변수(B)는 3 이상으로 설정되는 것이 바람직하다. 본 실시 형태에서는, 변수(B)는 3으로 설정된다.The angle determining unit 24 determines the variable B, and when the number of data points held by the data point buffer is equal to or greater than the number of the variable B, the angle is calculated and determined by using the corresponding data point. When the number of data points held by the data point buffer is less than the number of variables (B), the angle determining unit 24 makes it impossible to calculate the angle indicated by the set of data points with more than a certain precision, so the keep event state It outputs to the determination unit 25, and the angle is not calculated. In general, since it is desirable to have three or more data points in calculating the slope of the regression line, it is preferable that the variable B is set to three or more. In this embodiment, the variable B is set to 3.

각도 결정부(24)는, 각도 결정부(24)가 각도를 산출할 수 있는지의 여부를 판정하는 시간의 간격을 밀리 세컨드로 지정하는 변수(I)를 정한다. 터치 이벤트가 계속 발생하는 경우 등, 각도 결정부(24)가 각도를 산출 가능한 경우가 계속하는 경우, 해당 간격은, 각도 결정부(24)가 각도를 산출하는 시간의 간격이 된다. 단, 변수(I)의 값은 밀리 세컨드로 한정되지 않는다.The angle determining unit 24 determines a variable I that designates an interval in milliseconds for determining whether or not the angle determining unit 24 can calculate the angle. When the case where the angle determination unit 24 can calculate the angle continues, such as when a touch event continues to occur, the interval becomes an interval of time during which the angle determination unit 24 calculates the angle. However, the value of the variable I is not limited to milliseconds.

각도 결정부(24)는, 상기와 같이 미리 정해진 처리 시간마다 각도 산출 가부에 대하여 판정하고, 미리 정해진 처리 시간마다 각도를 결정한다. 하나의 바람직한 예에서는, 미리 정해진 처리 시간은, 게임을 실행하기 위한 프레임 레이트에 대응하는 시간이다. 프레임 레이트가 30fps(30Hz)인 경우, 변수(I)는 33으로 설정된다. 변수(I)에 33이 설정되었을 때, 각도 결정부(24)는, 33 밀리 세컨드에 1 회 각도를 산출할 수 있을지 판정하고, 각도를 산출 가능한 경우에는 산출한 각도를 결정하고, 결정한 각도를 angle 이벤트와 함께 상태 결정부(25)로 출력한다. 산출 불가능한 경우, 각도 결정부(24)는, start 이벤트, stop 이벤트, 또는 keep 이벤트 중 어느 한 개를 상태 결정부(25)로 출력한다. 또한, angle 이벤트는 각도를 나타내는 정보를 포함할 수 있고, 이 경우, 각도 결정부(24)는, 각도를 산출 가능한 경우, angle 이벤트를 상태 결정부(25)로 출력한다.The angle determination unit 24 determines whether or not the angle is calculated for each predetermined processing time as described above, and determines the angle for each predetermined processing time. In one preferred example, the predetermined processing time is a time corresponding to the frame rate for executing the game. When the frame rate is 30 fps (30 Hz), the variable I is set to 33. When 33 is set in the variable I, the angle determination unit 24 determines whether the angle can be calculated once in 33 milliseconds, and when the angle can be calculated, determines the calculated angle, and sets the determined angle. It is output to the state determination unit 25 together with the angle event. If calculation is not possible, the angle determination unit 24 outputs any one of a start event, a stop event, and a keep event to the state determination unit 25 . In addition, the angle event may include information indicating an angle. In this case, the angle determining unit 24 outputs the angle event to the state determining unit 25 when the angle can be calculated.

데이터 포인트 버퍼가 보지하는 데이터 포인트의 집합이 나타내는 각도를 산출함에 있어서, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 기초하여 회귀 직선의 기울기를 결정한다. 여기서, 각도 결정부(24)가 참조하는 데이터 포인트의 개수는 3 이상이다. 각도 결정부(24)는, 회귀 직선의 기울기를 결정함에 있어서, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 x 축의 값의 변위량 및 y 축의 값의 변위량에 기초하여, 독립 변수의 축으로서 x 축 및 y 축 중 어느 한 쪽의 축을 결정한다. 동시에, 각도 결정부(24)는, 다른 한 쪽의 축을 종속 변수의 축으로서 결정한다.In calculating the angle indicated by the set of data points held by the data point buffer, the angle determining unit 24 determines the slope of the regression line based on the data points held in the data point buffer. Here, the number of data points referred to by the angle determining unit 24 is three or more. When determining the slope of the regression line, the angle determining unit 24 determines the slope of the regression line, based on the displacement amount of the x-axis value and the displacement amount of the y-axis value in the data point held in the data point buffer, x as the axis of the independent variable Decide on either axis or y axis. At the same time, the angle determining unit 24 determines the other axis as the axis of the dependent variable.

본 실시 형태에서는, 각도 결정부(24)는, 최소 이승법을 이용하여 회귀 직선의 기울기를 산출한다. 최소 이승법을 이용하여 회귀 직선의 기울기를 구하는 방법은 이미 알려져 있으나, 해당 방법은 독립 변수와 종속 변수의 관계의 강도를 기울기로서 구하는 것이다. 최소 이승법은, x 축을 독립 변수의 축으로 하고, y 축을 종속 변수의 축으로서 적용하는 것이 일반적이지만, x 축의 값이 고정되어 y 축의 값만이 변화하는 경우, 종속 변수가 독립 변수에 일절의 종속성을 가지지 않게 된다. 또한, y 축에 따른 기울기를 결정하는 경우, 결정되는 기울기는, 예를 들면, y 축을 넘어 큰 마이너스의 값으로부터 큰 플러스의 값이 되는 경우가 있어, 안정되게 기울기를 내는 것이 어렵다. 그 때문에, 각도 결정부(24)는, x 축의 값과 y 축의 값 중 어느 쪽이 독립 변수로서 적절한지를 판정하고, 결정된 독립 변수의 축 및 종속 변수의 축에 기초하여 최소 이승법을 이용하여 회귀 직선의 기울기를 결정한다.In the present embodiment, the angle determining unit 24 calculates the slope of the regression straight line using the least squares method. A method of obtaining the slope of a regression line using the least squares method is already known, but the method is to obtain the strength of the relationship between the independent variable and the dependent variable as the slope. In the least squares method, the x-axis is the axis of the independent variable and the y-axis is applied as the axis of the dependent variable. will not have In addition, when determining the inclination along the y-axis, the determined inclination may, for example, change from a large negative value to a large positive value over the y-axis, and it is difficult to provide a stable inclination. Therefore, the angle determination unit 24 determines which one of the x-axis value and the y-axis value is appropriate as the independent variable, and regresses using the least squares method based on the determined axis of the independent variable and the axis of the dependent variable. Determine the slope of the straight line.

각도 결정부(24)는, 독립 변수의 축을 x 축으로 할 때, y=ax+b의 회귀 직선의 기울기 a를 결정하고, 독립 변수의 축을 y 축으로 할 때, x=cy+d의 회귀 직선의 기울기 c를 결정한다. 구체적으로는, 각도 결정부(24)는, 이하의 (a) 내지 (e)에 의하여 회귀 직선의 기울기를 구한다.The angle determining unit 24 determines the slope a of the regression line of y=ax+b when the axis of the independent variable is the x-axis, and the regression of x=cy+d when the axis of the independent variable is the y-axis. Determine the slope c of the straight line. Specifically, the angle determining unit 24 calculates the inclination of the regression straight line by the following (a) to (e).

(a) 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 평균 및 종속 변수의 평균을 산출(결정)한다.(a) The angle determining unit 24 calculates (determines) the average of the independent variable and the average of the dependent variable in the data points held in the data point buffer.

(b) 각도 결정부(24)는, (a)에서 결정된 평균을 이용하여, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 편차 및 종속 변수의 편차를 산출(결정)한다.(b) The angle determining unit 24 calculates (determines) the deviation of the independent variable and the deviation of the dependent variable in the data point held in the data point buffer, using the average determined in (a).

(c) 각도 결정부(24)는, (b)에서 결정된 독립 변수의 편차를 이용하여, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 독립 변수의 분산을 산출(결정)한다.(c) The angle determining unit 24 uses the deviation of the independent variable determined in (b) to calculate (determine) the variance of the independent variable in the data point held in the data point buffer.

(d) 각도 결정부(24)는, (b)에서 결정된 독립 변수의 편차 및 종속 변수의 편차를 이용하여, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 공분산을 산출(결정)한다.(d) The angle determining unit 24 calculates (determines) the covariance in the data points held in the data point buffer using the deviation of the independent variable and the deviation of the dependent variable determined in (b).

(e) 각도 결정부(24)는, (d)에서 결정된 공분산을 (c)에서 결정된 독립 변수의 분산으로 나눔으로써 회귀 직선의 기울기를 산출(결정)한다.(e) The angle determining unit 24 calculates (determines) the slope of the regression line by dividing the covariance determined in (d) by the variance of the independent variable determined in (c).

하나의 예에서는, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 x 축의 값의 최대값과 최소값의 차분값 및 y 축의 값의 최대값과 최소값의 차분값에 기초하여, 독립 변수의 축으로서 x 축 및 y 축 중 어느 한 쪽의 축을 결정하고, 다른 한 쪽의 축을 종속 변수의 축으로서 결정한다. 바람직하게는, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 x 축의 값의 최대값과 최소값의 차분값에 대하여 가중 계수를 이용하여 가중치 부여를 행한 값 및 y 축의 값의 최대값과 최소값의 차분값에 기초하여, 독립 변수의 축으로서 x 축 및 y 축 중 어느 한 쪽의 축을 결정하고, 다른 한 쪽의 축을 종속 변수의 축으로서 결정한다.In one example, the angle determining unit 24 is based on the difference between the maximum value and the minimum value of the x-axis value and the difference value between the maximum value and the minimum value of the y-axis value in the data point held in the data point buffer. Thus, either one of the x-axis and the y-axis is determined as the axis of the independent variable, and the other axis is determined as the axis of the dependent variable. Preferably, the angle determining unit 24 is configured to weight the difference between the maximum value and the minimum value of the x-axis value of the data point held in the data point buffer using a weighting coefficient, and the y-axis value. Based on the difference between the maximum value and the minimum value, either one of the x-axis and the y-axis is determined as the axis of the independent variable, and the other axis is determined as the axis of the dependent variable.

각도 결정부(24)는, 상기와 같이 최소 이승법을 이용하여 회귀 직선의 기울기를 산출(결정)한다. 바람직하게는, 각도 결정부(24)가 회귀 직선의 기울기를 산출하는 것은, 각도 결정부(24)가 회귀 직선의 기울기의 각도를 산출하는 것을 의미한다. 여기서, 산출되는 회귀 직선의 기울기는 음양의 방향을 가지지 않으므로, 각도 결정부(24)는, 최소 이승법을 이용하여 회귀 직선의 기울기를 산출할 때, 예를 들면, 0 도 내지 90 도 및 270 도 내지 360 도의 범위 내에서 산출한다. 따라서, 예를 들면, 데이터 포인트의 집합이 나타내는 각도가, 45 도의 경우 또는 225 도의 경우에도, 회귀 직선의 기울기로서 45 도가 산출된다. 그 때문에, 각도 결정부(24)는, 회귀 직선의 기울기를 결정한 후, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여, 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정한다. 구체적으로는, 각도 결정부(24)는, 회귀 직선의 기울기를 결정한 후, 유저가 조작 대상 오브젝트를 제어하기 위한 각도를 결정함에 있어서, 결정된 회귀 직선의 기울기(의 각도)에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다. 여기서, 데이터 포인트의 집합으로서의 변위 방향은, 데이터 포인트가 시간과 함께 변위하는 방향을 나타내는 것이며, 예를 들면, 유저가 터치 패널(17) 상에서 손가락을 움직이는 대략적인 방향에 대응하는 것이다.The angle determining unit 24 calculates (determines) the slope of the regression straight line using the least squares method as described above. Preferably, when the angle determination unit 24 calculates the slope of the regression line, it means that the angle determination unit 24 calculates the angle of the slope of the regression line. Here, since the calculated slope of the regression line does not have a negative direction, the angle determining unit 24 calculates the slope of the regression line using the least squares method, for example, 0 degrees to 90 degrees and 270 degrees. It is calculated within the range of degrees to 360 degrees. Therefore, for example, 45 degrees is calculated as the slope of the regression line even when the angle indicated by the set of data points is 45 degrees or 225 degrees. Therefore, after determining the slope of the regression line, the angle determining unit 24 determines the amount of rotation for rotating the determined slope of the regression line based on the displacement direction as a set of data points held in the data point buffer. . Specifically, after determining the slope of the regression line, the angle determining unit 24 determines whether the user rotates 180 degrees with respect to the determined slope (angle of) of the regression line when determining the angle for controlling the object to be manipulated. Determines the amount of rotation indicating whether or not Here, the displacement direction as a set of data points indicates a direction in which the data points are displaced with time, and corresponds to, for example, an approximate direction in which the user moves a finger on the touch panel 17 .

하나의 예에서는, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에서 시계열적으로 전후하는 데이터 포인트의 변위 방향에 기초하여 회전량을 결정한다. 바람직하게는, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에서의 시계열적으로 전후하는, 결정된 독립 변수의 축의 값의 차분값의 음양의 수량을 비교함으로써 회전량을 결정한다. 결정되는 회전량은, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량이다.In one example, the angle determining unit 24 determines the amount of rotation based on the displacement direction of the data points back and forth in time series in the data point held in the data point buffer. Preferably, the angle determining unit 24 determines the rotation amount by comparing the positive and negative quantities of the difference values of the values of the axes of the determined independent variables before and after the data points held in the data point buffer in time series. . The determined rotation amount is a rotation amount indicating whether to rotate 180 degrees with respect to the determined inclination of the regression line.

각도 결정부(24)는, 데이터 포인트 버퍼가 먼저 저장된 데이터 포인트로부터 차례대로 데이터 포인트를 보지하도록, 각 데이터 포인트를 저장한다. 혹은, 각도 결정부(24)는, 데이터 포인트 버퍼에 데이터 포인트를 저장할 때, 저장된 차례가 식별 가능한 식별 정보를 관련지어 저장한다. 이와 같이, 각도 결정부(24)는, 저장된 차례를 식별할 수 있도록, 즉, 저장된 데이터 포인트의 시계열 순서를 식별할 수 있도록, 데이터 포인트 버퍼에 데이터 포인트를 보지하고 있다. 이 때, 각도 결정부(24)는, 데이터 포인트 취득 시간(t)의 값을 이용할 수 있다.The angle determining unit 24 stores each data point so that the data point buffer holds the data points sequentially from the first stored data point. Alternatively, when storing data points in the data point buffer, the angle determining unit 24 stores the stored sequence in association with identification information that can be identified. In this way, the angle determining unit 24 holds the data points in the data point buffer so that the stored sequence can be identified, that is, the time series sequence of the stored data points can be identified. At this time, the angle determining unit 24 may use the value of the data point acquisition time t.

각도 결정부(24)는, 결정된 회귀 직선의 기울기 및 결정된 회전량에 기초하여, 데이터 포인트의 집합이 나타내는 각도를 산출하고, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도로서 결정한다.The angle determining unit 24 calculates an angle indicated by the set of data points based on the determined inclination of the regression straight line and the determined rotation amount, and determines as an angle for the user to control the operation target object in the virtual space.

본 실시 형태에서는, 상기의 각도 결정부(24)가 행하는, 회귀 직선의 기울기의 결정, 회전량의 결정, 및 각도의 결정에 대하여, 식 (1)에 나타내는 함수(aop(x, y))를 이용하여 실현된다. 함수(aop(x, y))는, 0 내지 360 도의 실수로 각도를 산출한다. 함수(aop(x, y))가 각도를 산출할 때, 데이터 포인트 버퍼는 n 개의 데이터 포인트(P(x, y))를 보지하고 있는 것으로 한다. 또한, n 개의 각 데이터 포인트(Pk(k=1 내지 n))의 x 좌표의 값 및 y 좌표의 값은, Pk(xk, yk)로 표시되고, P1(x1, y1), P2(x2, y2), …, Pn(xn, yn)의 순서대로 저장된 시간이 빠른 것으로 한다.In this embodiment, the function (aop(x, y)) shown in Formula (1) for the determination of the inclination of the regression line, the determination of the rotation amount, and the determination of the angle performed by the angle determination unit 24 described above in the present embodiment is realized using The function aop(x, y) yields an angle as a real number between 0 and 360 degrees. When the function (aop(x, y)) calculates an angle, it is assumed that the data point buffer holds n data points (P(x, y)). In addition, the x-coordinate value and the y-coordinate value of each of the n data points (P k (k=1 to n)) are expressed as P k (x k , y k ), and P 1 (x 1 , y 1 ), P 2 (x 2 , y 2 ), … , Pn(x n , y n ) is stored in the order of the earliest.

Figure 112020116311964-pct00001
(1)
Figure 112020116311964-pct00001
(One)

함수(aop(x, y))는, 경우를 분류하기 위해, 함수(rotate(x, y)), 함수(left(x)), 함수(down(y))를 사용한다. 맨처음으로, 함수(aop(x, y))는, 함수(rotate(x, y))를 이용하여, x와 y 중 어느 한 개를 독립 변수로서 결정한다.A function (aop(x, y)) uses a function (rotate(x, y)), a function (left(x)), and a function (down(y)) to classify the cases. First, a function (aop(x, y)) uses a function (rotate(x, y)) to determine either one of x and y as an independent variable.

함수(rotate(x, y))는, 식 (2)에 의하여 정해진다.The function (rotate(x, y)) is determined by Expression (2).

Figure 112020116311964-pct00002
(2)
Figure 112020116311964-pct00002
(2)

함수(rotate(x, y))는, n 개의 데이터 포인트(P(x, y))가 주로 y 축 방향으로 변위하고 있는지의 여부를 판정하고, 예를 들면, 진위값을 되돌린다. n 개의 데이터 포인트(P(x, y))가 주로 y 축 방향으로 변위하고 있는 경우란, 예를 들면, 터치 패널(17) 상에서 유저의 손가락이 주로 상하 방향으로 움직인 경우이다. 이와 같이 하여, 함수(rotate(x, y))는, n 개의 데이터 포인트(P(x, y))가 주로 x 축(좌우) 방향으로 변위하고 있는지, 또는 주로 y 축(상하) 방향으로 변위하고 있는지를 판정하여, x 축의 값과 y 축의 값 중 어느 쪽이 독립 변수로서 적절한지를 판정한다.The function rotate(x, y) determines whether the n data points P(x, y) are displaced mainly in the y-axis direction, for example, returns the true value. The case in which the n data points P(x, y) are mainly displaced in the y-axis direction is, for example, a case in which the user's finger mainly moves in the vertical direction on the touch panel 17 . In this way, the function (rotate(x, y)) determines whether the n data points P(x, y) are mainly displaced in the x-axis (left-right) direction, or are mainly displaced in the y-axis (up-and-down) direction. It is determined whether the value of the x-axis or the value of the y-axis is appropriate as the independent variable.

식 (2)에서, (max(x)-min(x))는, n 개의 데이터 포인트(P)의 x의 값(x1, x2, …xn)에 있어서의 최대값과 최소값의 차분의 절대값이며, n 개의 데이터 포인트(P)의 x 축 방향의 변위량을 나타낸다. 마찬가지로 하여, (max(y)-min(y))는, n 개의 데이터 포인트(P)의 y의 값(y1, y2, … yn)에 있어서의 최대값과 최소값의 차분의 절대값이며, n 개의 데이터 포인트(P)의 y 축 방향의 변위량을 나타낸다. 변수(w)는, (max(x)-min(x))에 대하여 가중치 부여를 행하는 가중 계수이다.In Equation (2), (max(x)-min(x)) is the difference between the maximum value and the minimum value in the x values (x 1 , x 2 , ... x n ) of n data points P is the absolute value of , and represents the amount of displacement in the x-axis direction of n data points (P). Similarly, (max(y)-min(y)) is the absolute value of the difference between the maximum value and the minimum value in the y values (y 1 , y 2 , ... y n ) of the n data points P , and represents the amount of displacement in the y-axis direction of n data points P. The variable w is a weighting coefficient for weighting (max(x)-min(x)).

함수(rotate(x, y))는, (max(y)-min(y))가 (max(x)-min(x))와 변수(w)와의 곱의 값보다 클 때에 부등호를 충족시키고, 함수(aop(x, y))는 좌표 변화를 행한다. 이 경우, 함수(aop(x, y))는, y 축을 독립 변수의 축으로 하고, x 축을 종속 변수의 축으로 하고, 함수(down(y))를 더 이용하여, 회전량을 결정한다. 한편, 함수(rotate(x, y))는, (max(y)-min(y))가 (max(x)-min(x))와 변수(w)와의 곱의 값 이하인 때에 부등호를 충족시키지 않고, 함수(aop(x, y))는, 좌표 변화를 행하지 않는다. 이 경우, 함수(aop(x, y))는, x 축을 독립 변수의 축으로 하고, y 축을 종속 변수의 축으로 하고, 함수(left(x))를 더 이용하여, 회전량을 결정한다.The function (rotate(x, y)) satisfies the inequality sign when (max(y)-min(y)) is greater than the value of the product of (max(x)-min(x)) and the variable (w) and , the function (aop(x, y)) performs a coordinate change. In this case, the function (aop(x, y)) uses the y-axis as the axis of the independent variable, the x-axis as the axis of the dependent variable, and further uses the function down(y) to determine the rotation amount. On the other hand, the function (rotate(x, y)) satisfies the inequality sign when (max(y)-min(y)) is less than or equal to the value of the product of (max(x)-min(x)) and the variable (w) , the function (aop(x, y)) does not change the coordinates. In this case, the function (aop(x, y)) uses the x-axis as the axis of the independent variable, the y-axis as the axis of the dependent variable, and further uses the function (left(x)) to determine the rotation amount.

함수(rotate(x, y))가 변수(w)에 의하여 가중치 부여되지 않는 경우, y 축 방향의 변위량이 x 축 방향의 변위량보다 약간 크면, 함수(aop(x, y))는 좌표 변화를 행하게 된다. 변수(w)를 이용하여 가중치 부여함으로써, 함수(aop(x, y))는, n 개의 데이터 포인트(P(x, y))가 보다 y 축에 따른 기울기의 경우에 좌표 변화를 행하도록 하는 것이 가능해진다.If the function (rotate(x, y)) is not weighted by the variable w, if the displacement in the y-axis direction is slightly greater than the displacement in the x-axis direction, the function (aop(x, y)) will do By weighting using the variable w, the function (aop(x, y)) is such that the n data points (P(x, y)) make a coordinate change in the case of a slope along the y-axis more thing becomes possible

예를 들면, 스마트폰은 세로 들기로 사용되는 경우가 많으므로, 도 3에 도시하는 터치 패널(17)의 y 축은 중력 방향과 실질적으로 평행이 되는 경우가 많다. 터치 패널(17)의 y 축 방향의 치수는 x 축 방향의 치수보다 큰 것을 고려하면, 변수(w)는 1보다 큰 값으로 하는 것이 바람직하다. 예를 들면, 변수(w)는 2로 하는 것이 바람직하다. 다른 예에서는, 스마트폰이 가로 들기가 되고, 또한 게임 앱이 구비하는 게임 엔진이 종횡의 좌표의 변환을 하지 않는 경우, 각도 결정부(24)는 w를 0.5 등의 1보다 작은 값으로 결정한다.For example, since a smartphone is often used vertically, the y-axis of the touch panel 17 shown in FIG. 3 is substantially parallel to the direction of gravity in many cases. Considering that the dimension of the touch panel 17 in the y-axis direction is larger than the dimension in the x-axis direction, the variable w is preferably set to a value larger than 1. For example, the variable w is preferably set to 2. In another example, when the smartphone is raised horizontally and the game engine provided in the game app does not convert the vertical and horizontal coordinates, the angle determining unit 24 determines w as a value smaller than 1, such as 0.5 .

함수(left(x))는, 식 (3)에 의하여 표시된다.The function (left(x)) is expressed by Equation (3).

Figure 112020116311964-pct00003
(3)
Figure 112020116311964-pct00003
(3)

함수(left(x))는, 함수(rotate(x, y))가 부등호를 충족시키지 않는 경우, n 개의 데이터 포인트(P(x, y))의 변위 방향이 -x 축 방향(좌측 방향)인지의 여부를 판정하고, 예를 들면, 진위값을 되돌린다. 구체적으로는, 함수(left(x))는, n 개의 데이터 포인트(P)의 x의 값(x1, x2, …xn)에 있어서의 시계열적으로 전후하는 값의 차분값(x2-x1, x3-x2, …xn-xn-1)을 산출한다. 함수(left(x))는, 차분값이 마이너스가 되는 개수가, 차분값이 플러스가 되는 개수보다 많은지의 여부를 판정함으로써, n 개의 데이터 포인트(P(x, y))의 변위 방향이 -x 축 방향(좌측 방향)인지의 여부를 판정한다. 이와 같이 하여, 함수(left(x))는, n 개의 데이터 포인트(P(x, y))의 변위 방향이 -x 축 방향(좌측 방향)인지 +x 축 방향(우측 방향)인지를 판정하고, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다. 예를 들면, 함수(left(x))가 참인 경우, 함수(aop(x, y))는 회전량을 180 도로 결정하고, 함수(left(x))가 거짓인 경우, 함수(aop(x, y))는 회전량을 0 도로 결정한다.The function (left(x)) indicates that if the function (rotate(x, y)) does not satisfy the inequality sign, the displacement direction of n data points (P(x, y)) is in the -x axis direction (left direction) It is determined whether or not it is recognized, for example, the authenticity value is returned. Specifically, the function left(x) is a difference value (x 2 ) between the values of x (x 1 , x 2 , ... x n ) of n data points P in time series. -x 1 , x 3 -x 2 , ...x n -x n-1 ). The function (left(x)) determines whether the number of negative differences is greater than the number of positive differences, so that the displacement direction of n data points P(x, y) is - Determines whether it is in the x-axis direction (left direction). In this way, the function (left(x)) determines whether the displacement direction of the n data points P(x, y) is -x-axis direction (left direction) or +x-axis direction (right direction), and , determines the amount of rotation indicating whether to rotate 180 degrees with respect to the determined slope of the regression line. For example, if the function (left(x)) is true, the function (aop(x, y)) determines the rotation amount by 180 degrees, and if the function (left(x)) is false, the function (aop(x)) , y)) determines the amount of rotation at 0 degrees.

함수(down(y))는, 식 (4)에 의하여 표시된다.The function down(y) is expressed by Expression (4).

Figure 112020116311964-pct00004
(4)
Figure 112020116311964-pct00004
(4)

함수(down(y))는, 함수(rotate(x, y))가 부등호를 충족시키는 경우, n 개의 데이터 포인트(P(x, y))의 변위 방향이 -y 축 방향(하측 방향)인지의 여부를 판정하고, 예를 들면, 진위값을 되돌린다. 구체적으로는, 함수(down(y))는, n 개의 데이터 포인트(P)의 y의 값(y1, y2, …yn)에 있어서의 시계열적으로 전후하는 값의 차분값(y2-y1, y3-y2, …yn-yn-1)을 산출한다. 함수(down(y))는, 차분값이 마이너스가 되는 개수가, 차분값이 플러스가 되는 개수보다 많은지의 여부를 판정함으로써, n 개의 데이터 포인트(P(x, y))의 변위 방향이 -y 축 방향(하측 방향)인지의 여부를 판정한다. 이와 같이 하여, 함수(down(y))는, n 개의 데이터 포인트(P(x, y))의 변위 방향이 -y 축 방향(하측 방향)인지 +y 축 방향(상측 방향)인지를 판정하고, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다. 예를 들면, 함수(down(y))가 참인 경우, 함수(aop(x, y))는 회전량을 180 도로 결정하고, 함수(down(y))가 거짓인 경우, 함수(aop(x, y))는 회전량을 0 도로 결정한다.The function (down(y)) determines whether the displacement direction of the n data points (P(x, y)) is in the -y-axis direction (downward direction) if the function (rotate(x, y)) satisfies the inequality sign. It is determined whether or not, for example, the authenticity value is returned. Specifically, the function down(y) is the difference value (y 2 ) between the values of y (y 1 , y 2 , ... y n ) of the n data points P in time series. -y 1 , y 3 -y 2 , ...y n -y n-1 ) are calculated. The function down(y) determines whether the number of negative differences is greater than the number of positive differences, so that the displacement direction of n data points P(x, y) is - It is determined whether or not it is in the y-axis direction (downward direction). In this way, the function down(y) determines whether the displacement direction of the n data points P(x, y) is -y-axis direction (downward direction) or +y-axis direction (upward direction), and , determines the amount of rotation indicating whether to rotate 180 degrees with respect to the determined slope of the regression line. For example, if the function (down(y)) is true, the function (aop(x, y)) determines the rotation amount by 180 degrees, and if the function (down(y)) is false, the function (aop(x)) , y)) determines the amount of rotation at 0 degrees.

함수(aop(x, y))는, 상기와 같이, 독립 변수(독립 변수의 축) 및 회전량을 결정한 후, 최소 이승법을 이용하여 기울기를 산출한다. 함수(aop(x, y))는, x를 독립 변수로 하고, y를 종속 변수로 하는 경우, y=ax+b의 회귀 직선의 기울기 a는, 식 (5)에 의하여 산출되고 있다.The function (aop(x, y)) calculates the slope using the least squares method after determining the independent variable (axis of the independent variable) and the rotation amount, as described above. As for the function (aop(x, y)), when x is an independent variable and y is a dependent variable, the slope a of the regression line of y=ax+b is calculated by Expression (5).

Figure 112020116311964-pct00005
(5)
Figure 112020116311964-pct00005
(5)

여기서,here,

Figure 112020116311964-pct00006
Figure 112020116311964-pct00006

는, x(독립 변수)의 평균이며,is the mean of x (independent variable),

Figure 112020116311964-pct00007
Figure 112020116311964-pct00007

는, y(종속 변수)의 평균이며,is the mean of y (the dependent variable),

Figure 112020116311964-pct00008
Figure 112020116311964-pct00008

는, x(독립 변수)와 y(종속 변수)의 공분산이며,is the covariance of x (independent variable) and y (dependent variable),

Figure 112020116311964-pct00009
Figure 112020116311964-pct00009

는, x(독립 변수)의 분산이다.is the variance of x (independent variable).

또한, 함수(aop(x, y))는, y를 독립 변수로 하고, x를 종속 변수로 하는 경우, x=cx+d의 회귀 직선의 기울기 c는, 식 (6)에 의하여 산출되고 있다.In the function (aop(x, y)), when y is an independent variable and x is a dependent variable, the slope c of the regression line of x = cx + d is calculated by Equation (6) .

Figure 112020116311964-pct00010
 (6)
Figure 112020116311964-pct00010
(6)

여기서,here,

Figure 112020116311964-pct00011
Figure 112020116311964-pct00011

는, x(종속 변수)의 평균이며,is the mean of x (the dependent variable),

Figure 112020116311964-pct00012
Figure 112020116311964-pct00012

는, y(독립 변수)의 평균이며,is the mean of y (independent variable),

Figure 112020116311964-pct00013
Figure 112020116311964-pct00013

는, x(종속 변수)와 y(독립 변수)의 공분산이며,is the covariance of x (dependent variable) and y (independent variable),

Figure 112020116311964-pct00014
Figure 112020116311964-pct00014

는, y(독립 변수)의 분산이다.is the variance of y (independent variable).

각도 결정부(24)는, 변수(V)를 정하고, 독립 변수의 분산이 V 이상이었을 경우, 함수(aop(x, y))를 이용하여 각도를 산출하고 결정한다. 각도 결정부(24)는, 독립 변수의 분산이 V 미만인 경우, keep 이벤트를 상태 결정부(25)로 출력하고, 각도를 산출하지 않는다. 독립 변수의 분산이 V 미만인 경우란, n 개의 데이터 포인트(P(x, y))가, 국소적으로 집중하고 있음을 의미한다. 따라서, 각도 결정부(24)가 변수(V)를 정함으로써, 매우 미세한 손가락의 움직임을 무시하고, 안정된 각도의 산출을 행하는 것이 가능해진다. 변수(V)는, 바람직하게는 0.7로 설정된다.The angle determining unit 24 determines the variable V, and when the variance of the independent variable is V or more, the angle is calculated and determined using the function (aop(x, y)). The angle determination unit 24 outputs a keep event to the state determination unit 25 when the variance of the independent variable is less than V, and does not calculate the angle. When the variance of the independent variable is less than V, it means that n data points (P(x, y)) are locally concentrated. Accordingly, when the angle determining unit 24 determines the variable V, it becomes possible to ignore very fine finger movements and to calculate a stable angle. The variable V is preferably set to 0.7.

함수(aop(x, y))는, 함수(rotate(x, y))가 거짓이며, 함수(left(x))가 거짓인 경우, 회귀 직선의 기울기로부터 얻어지는 각도를 그대로 산출한다. 함수(aop(x, y))는, 함수(rotate(x, y))가 거짓이며, 함수(left(x))가 참인 경우, 회귀 직선의 기울기로부터 얻어지는 각도에 180 도 플러스한 각도를 산출한다. 함수(aop(x, y))는, 함수(rotate(x, y))가 참이며, 함수(down(y))가 거짓인 경우, 회귀 직선의 기울기로부터 얻어지는 각도를 90 도로부터 뺌으로써 각도를 산출한다. 함수(aop(x, y))는, 함수(rotate(x, y))가 참이며, 함수(down(y))가 참인 경우, 회귀 직선의 기울기로부터 얻어지는 각도를 90 도로부터 뺌으로써 산출한 각도에 180 도 플러스한 각도를 산출한다.The function (aop(x, y)) calculates the angle obtained from the slope of the regression line as it is when the function (rotate(x, y)) is false and the function (left(x)) is false. The function (aop(x, y)) calculates the angle obtained from the slope of the regression line plus 180 degrees if the function (rotate(x, y)) is false and the function (left(x)) is true. do. The function (aop(x, y)) is an angle by subtracting from 90 degrees the angle obtained from the slope of the regression line when function (rotate(x, y)) is true and function (down(y)) is false. to calculate The function (aop(x, y)) is calculated by subtracting the angle obtained from the slope of the regression line from 90 degrees when the function (rotate(x, y)) is true and the function (down(y)) is true. The angle is calculated by adding 180 degrees to the angle.

상태 결정부(25)는, 각도 결정부(24)에 의하여 미리 정해진 처리 시간마다 결정되는 각도에 기초하여, 미리 정해진 처리 시간마다 각도 및 크기를 결정한다. 상태 결정부(25)는, 결정한 각도 및 크기를 어플리케이션부(26)로 출력한다. 상태 결정부(25)는, 어플리케이션부(26)로 직접 출력하지 않고, 어플리케이션부(26)가 참조하는 메모리 영역으로 결정한 각도 및 크기를 나타내는 정보를 저장해도 된다. 하나의 바람직한 예에서는, 상태 결정부(25)는, 연속적으로 산출되는 각도의 열을 콘트롤러의 기능으로 변환하는 소프트웨어 모듈이다. 본 모듈은, 터치 좌표는 일절 이용하지 않고, 각도와 시간을 사용한 상태 관리 모델(스테이트 머신)로서 실장된다.The state determination unit 25 determines the angle and size for each predetermined processing time based on the angle determined for each predetermined processing time by the angle determination unit 24 . The state determination unit 25 outputs the determined angle and size to the application unit 26 . The state determination unit 25 may store information indicating the determined angle and size in a memory area referred to by the application unit 26 without directly outputting it to the application unit 26 . In one preferred example, the state determination unit 25 is a software module that converts a sequence of consecutively calculated angles into a function of the controller. This module is implemented as a state management model (state machine) using angles and time without using any touch coordinates.

상태 결정부(25)는, 미리 정해진 처리 시간마다 각도 결정부(24)가 출력하는 정보를 수취하면, 수취한 이벤트에 따라, 미리 정해진 처리 시간마다 가상 콘트롤러의 기울기의 상태를 출력한다. 가상 콘트롤러는, 물리적인 아날로그 콘트롤러를 소프트웨어로 실현하는 것이지만, 가상 콘트롤러의 기울기란, 물리적인 콘트롤러의 조이스틱 또는 레버의 기울기에 대응하는 것이다. 상태 결정부(25)는, 가상 콘트롤러의 기울기의 상태를, 벡터, 즉, 방향(각도) 및 크기로서 출력한다. 크기는, 가속도 정보로 할 수도 있고, 속도 정보로 할 수도 있다. 가상 콘트롤러의 기울기의 상태는, 물리적인 아날로그 콘트롤러의 입력량에 대응하는 것이다.When the state determination unit 25 receives the information output by the angle determination unit 24 for each predetermined processing time, according to the received event, the state determination unit 25 outputs the state of the inclination of the virtual controller for each predetermined processing time. The virtual controller realizes a physical analog controller by software, but the inclination of the virtual controller corresponds to the inclination of the joystick or lever of the physical controller. The state determination unit 25 outputs the state of the inclination of the virtual controller as a vector, ie, a direction (angle) and a magnitude. The magnitude may be used as acceleration information or as speed information. The state of the inclination of the virtual controller corresponds to the input amount of the physical analog controller.

이와 같이, 상태 결정부(25)는, 발생한 터치 이벤트의 의미를 해석하기 위한 상태 천이 모델을 제공하는 것이라고 생각할 수 있다. 상태 결정부(25)는, 가상의 콘트롤러의 기울기를 상태로서 관리하고, 미리 정해진 처리 시간마다 각도 결정부(24)가 출력하는 정보를 수취하면, 미리 정해진 처리 시간마다 상태 천이시키는 것이다.As described above, it can be considered that the state determination unit 25 provides a state transition model for interpreting the meaning of the generated touch event. The state determination unit 25 manages the inclination of the virtual controller as a state, and when information output by the angle determination unit 24 is received at each predetermined processing time, the state transition is made at each predetermined processing time.

하나의 예에서는, 상태 결정부(25)는, 각도 결정부(24)로부터 출력되는 각도의 정보를 축적하고, 시간에 따라, 어플리케이션부(26)로의 출력을 산출한다. 예를 들면, 각도 결정부(24)가 165ms 계속하여 33ms마다 45 도를 출력하는 경우, 상태 결정부(25)는, 45 도의 방향으로 165ms분의 가속도 정보를 결정한다. 예를 들면, 각도 결정부(24)가 동일한 각도의 출력이 연속한 경우, 상태 결정부(25)는 해당 각도의 방향으로 가속하는 정보를 출력하고, 이어서 각도 결정부(24)가 해당 각도와 180 도 반대의 각도를 입력한 경우, 상태 결정부(25)는, 감속하는 정보를 출력한다. 이러한 구성으로 함으로써, 실제의 터치 좌표를 그대로 이용하지 않고, 콘트롤러의 입력량을, 상태 천이 회수에 대응하는 시간으로서 구하는 것이 가능해진다.In one example, the state determination unit 25 accumulates angle information output from the angle determination unit 24 , and calculates an output to the application unit 26 over time. For example, when the angle determination unit 24 outputs 45 degrees every 33 ms continuously for 165 ms, the state determination unit 25 determines acceleration information for 165 ms in the direction of 45 degrees. For example, when the angle determination unit 24 outputs the same angle continuously, the state determination unit 25 outputs information about acceleration in the direction of the angle, and then the angle determination unit 24 outputs the angle and When an angle opposite to 180 degrees is input, the state determination unit 25 outputs information about decelerating. By setting it as such a structure, it becomes possible to obtain|require the input amount of a controller as a time corresponding to the number of state transitions without using the actual touch coordinates as it is.

하나의 예에서는, 상태 결정부(25)는, 각도 결정부(24)가 출력하는 정보를 수취하면, 수취한 이벤트에 따라, 가상 콘트롤러의 기울기의 상태를 설정하고, 게임 어플리케이션으로, 이동 이벤트 또는 가속 이벤트를 각도 및 크기를 나타내는 정보와 함께 출력한다. 구체적으로는, 상태 결정부(25)는, 소정의 프로그램 언어를 이용하여, 물리적인 아날로그 콘트롤러를 본뜬 가속도 처리를 실장할 수 있다.In one example, when the state determination unit 25 receives the information output by the angle determination unit 24 , according to the received event, the state determination unit 25 sets the state of the inclination of the virtual controller, and in a game application, a movement event or Outputs the acceleration event with information indicating the angle and magnitude. Specifically, the state determination unit 25 can implement acceleration processing imitating a physical analog controller by using a predetermined programming language.

하나의 바람직한 예에서는, 상태 결정부(25)는, 가상 콘트롤러의 기울기의 상태를 벡터로서 보지하고, 미리 정해진 처리 시간마다, 보지한 벡터를 출력한다. 상태 결정부(25)는, 각도 결정부(24)로부터 start 이벤트를 수취하면, 상태 관리를 개시한다. 상태 결정부(25)는, 최초로 각도 결정부(24)로부터 angle 이벤트를 수취하면, 수취한 각도 및 상태 천이 1 회분의 크기의 벡터의 보지를 개시하고, 해당 벡터를 출력한다. 상태 결정부(25)는, 추가로 각도 결정부(24)로부터 angle 이벤트를 수취하면, 내부에서 보지하는 벡터에, 수취한 각도 및 상태 천이 1 회분의 크기의 벡터를 가산하고, 해당 벡터를 보지함과 동시에 출력한다. 상태 결정부(25)는, 출력하는 벡터의 길이가 1.0을 초과한 경우, 1.0에 정규화한다.In one preferred example, the state determination unit 25 holds the state of the inclination of the virtual controller as a vector, and outputs the held vector for every predetermined processing time. The state determination unit 25 starts state management upon receiving a start event from the angle determination unit 24 . When an angle event is first received from the angle determination unit 24 , the state determination unit 25 starts holding the received angle and a vector having a size corresponding to one state transition, and outputs the vector. When an angle event is further received from the angle determining unit 24, the state determining unit 25 adds the received angle and a vector equal to one state transition to the internally held vector, and holds the vector. and output at the same time. The state determination unit 25 normalizes to 1.0 when the length of the vector to be output exceeds 1.0.

예를 들면, 상태 결정부(25)는, 각도 결정부(24)로부터 45 도의 각도 정보를 1 회 수취하면, 45 도의 각도 및 0.2의 크기의 벡터를 출력함과 동시에, 해당 벡터를 보지한다. 상태 결정부(25)는, 각도 결정부(24)로부터 45 도의 각도 정보를 더 4 회 수취하면, 45 도의 각도 및 1.0의 크기의 벡터를 보지함과 동시에 출력한다. 상태 결정부(25)는, 추가로 각도 결정부(24)로부터 45 도의 각도 정보를 수취한 경우에도, 45 도의 각도 및 1.0의 크기의 벡터를 보지함과 동시에 출력한다. 상태 결정부(25)는, 30 도의 각도 정보를 수취한 경우, 30 도의 각도 및 0.2의 크기의 벡터와, 45 도의 각도 및 1.0의 크기의 벡터를 가산한 벡터의 각도 및 1.0의 크기의 벡터를 보지함과 동시에 출력한다. 이 경우에도, 벡터의 크기가 1.0을 초과하므로, 상태 결정부(25)는, 1.0에 정규화하여 출력한다.For example, when the state determining unit 25 receives 45 degree angle information from the angle determining unit 24 once, it outputs a 45 degree angle and a vector with a magnitude of 0.2, and holds the vector. When the state determining unit 25 receives the 45 degree angle information from the angle determining unit 24 four more times, it holds and outputs the 45 degree angle and the vector having a magnitude of 1.0. The state determination unit 25 also holds and outputs a vector of an angle of 45 degrees and a magnitude of 1.0 even when 45 degree angle information is further received from the angle determination unit 24 . When receiving the angle information of 30 degrees, the state determination unit 25 adds a vector of an angle of 30 degrees and a magnitude of 0.2, an angle of a vector obtained by adding a vector of an angle of 45 degrees and a vector of magnitude of 1.0, and a vector of magnitude of 1.0. It is displayed and printed at the same time. Also in this case, since the magnitude of the vector exceeds 1.0, the state determination unit 25 normalizes it to 1.0 and outputs it.

상태 결정부(25)는, 각도 결정부(24)로부터 keep 이벤트를 수취하면, 내부에서 보지하는 벡터의 보지를 계속하고, 해당 벡터를 출력한다. 상태 결정부(25)는, 각도 결정부(24)로부터 stop 이벤트를 수취하면, 내부에서 보지하는 벡터의 보지를 해제하고, 제로 벡터를 출력하거나, 또는 stop 이벤트를 출력한다.When a keep event is received from the angle determination unit 24, the state determination unit 25 continues holding the vector held inside, and outputs the vector. When the stop event is received from the angle determination unit 24, the state determination unit 25 releases the vector held inside and outputs a zero vector or a stop event.

이러한 구성으로 함으로써, 물리적인 아날로그 콘트롤러와 같은 조작을 스마트폰 상에서 실현하는 것이 가능해진다.By setting it as such a structure, it becomes possible to implement|achieve operation similar to a physical analog controller on a smartphone.

어플리케이션부(26)는, 전자 장치(10) 상에서 기동된 앱의 기능을 가지고, 해당 앱에 의한 서비스의 제공을 행한다. 하나의 바람직한 예에서는, 어플리케이션부(26)는, 상태 결정부(25)로부터 출력된 벡터를, 구체적인 가상 캐릭터의 모션 등으로 변환하는 것이며, 일반적인 게임 앱에 실장되어 있는 기능이다. 앱이 Web 앱인 경우, 전자 장치(10)와 통신하는 서버가 어플리케이션부(26)의 일부 또는 전부를 가지고, 앱은, 해당 서버와 데이터의 송수신을 행한다.The application unit 26 has a function of an app activated on the electronic device 10 and provides a service by the app. In one preferred example, the application unit 26 converts the vector output from the state determination unit 25 into a specific virtual character motion or the like, and is a function implemented in a general game app. When the app is a web app, a server communicating with the electronic device 10 has a part or all of the application unit 26 , and the app transmits/receives data to and from the server.

각도 결정부(24)에 의한, 식 (1)에 나타내는 함수(aop(x, y))를 이용한 각도 산출의 실시예를 이하에 설명한다. 이하의 예시에서, 변수(w)는 2이며, 독립 변수의 분산은 V 이상인 것으로 하고, 시간(t1 내지 t4)은, 각도 결정부(24)가 각도를 산출하는 임의의 하나의 시간을 나타내는 것으로 한다.An example of angle calculation using the function (aop(x, y)) shown in Formula (1) by the angle determining unit 24 is described below. In the following example, it is assumed that the variable w is 2, the variance of the independent variable is V or more, and the times t1 to t4 represent any one time at which the angle determination unit 24 calculates the angle. do.

도 5는, 시간(t1)에서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 나타내는 도면이다. 데이터 포인트 버퍼가 보지하는 데이터 포인트의 집합(40)은, 6 개의 데이터 포인트(P41 내지 P46)로 이루어진다. 또한, P41 내지 P46의 x 좌표의 값 및 y 좌표의 값(x, y)은, 각각 P41(x41, y41), P42(x42, y42) …P46(x46, y46)이며, 데이터 포인트 버퍼는, P41, P42, …, P46의 순서대로 데이터 포인트를 저장한 것으로 한다.Fig. 5 is a diagram showing an example of data points held by the data point buffer at time t1. The set 40 of data points held by the data point buffer consists of six data points P41 to P46. In addition, the x-coordinate values and the y-coordinate values (x, y) of P41 to P46 are P41(x 41 , y 41 ), P42(x 42 , y 42 ), respectively. P46(x 46 , y 46 ), and the data point buffers are P41, P42, ... It is assumed that data points are stored in the order of , P46.

맨처음으로, 함수(aop(x, y))는, 함수(rotate(x, y))를 이용하여, abs(max(x)-min(x))와 abs(max(y)-min(y))를 비교한다. 도 6에서, P46와 P41의 x 좌표의 값의 차분값(x46-x41(=△x))이 abs(max(x)-min(x))에 대응하고, P45와 P41의 y 좌표의 값의 차분값(y45-y41(=△y))이 abs(max(y)-min(y))에 대응함을 확인할 수 있다. 도 5에서, △x>△y이다. 따라서, 함수(rotate(x, y))는, 부등호를 충족시키지 않으므로, 거짓 값을 되돌린다.First of all, the function (aop(x, y)), using the function (rotate(x, y)), abs(max(x)-min(x)) and abs(max(y)-min( y)) are compared. In Fig. 6, the difference value (x 46 -x 41 (=Δx)) of the x-coordinate values of P46 and P41 corresponds to abs(max(x)-min(x)), and the y-coordinates of P45 and P41 It can be confirmed that the difference value (y 45 -y 41 (=Δy)) of the values of y corresponds to abs(max(y)-min(y)). In Fig. 5, ?x>?y. Thus, the function rotate(x, y) does not satisfy the inequality sign, so it returns a false value.

이어서, 함수(aop(x, y))는, 함수(left(x))를 이용하여, 시계열적으로 전후하는 값의 차분값(x42-x41, x43-x42, …x46-x45)을 산출한다. 도 5에서, 차분값은 모두 플러스가 된다. 따라서, 함수(left(x))는 부등호를 충족시키지 않으므로, 거짓 값을 되돌린다.Next, the function (aop(x, y)) uses the function (left(x)) to determine the difference value (x 42 -x 41 , x 43 -x 42 , ...x 46 - x 45 ). In Fig. 5, the difference values are all positive. Thus, the function left(x) does not satisfy the inequality sign, so it returns a false value.

상기 실시예에서는, 함수(rotate(x, y))가 거짓이며, 함수(left(x))가 거짓이다. 따라서, 함수(aop(x, y))는, 데이터 포인트의 집합(40)으로부터 도 7에 도시하는 회귀 직선(81)을 구하고, 도 8에 도시하는 바와 같이, 회귀 직선(81)의 기울기로부터 각도(91)를 산출한다.In the above embodiment, the function (rotate(x, y)) is false, and the function (left(x)) is false. Accordingly, the function (aop(x, y)) obtains the regression line 81 shown in Fig. 7 from the set 40 of data points, and, as shown in Fig. 8, from the slope of the regression line 81 The angle 91 is calculated.

도 9는, 시간(t2)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다. 데이터 포인트 버퍼가 보지하는 데이터 포인트의 집합(60)은, 6 개의 데이터 포인트(P61 내지 P66)로 이루어진다. P61, P62, …P66의 x 좌표의 값 및 y 좌표의 값은, 각각 P46, P45, …, P41의 x 좌표의 값 및 y 좌표의 값과 같으며, P61, P62, …, P66의 순서대로 데이터 포인트를 저장한 것으로 한다.9 is a diagram showing an example of data points held by the data point buffer at time t2. The set 60 of data points held by the data point buffer consists of six data points P61 to P66. P61, P62, … The values of the x-coordinate and the y-coordinate of P66 are P46, P45, ..., respectively. , equal to the value of the x-coordinate and the value of the y-coordinate of P41, P61, P62, ... It is assumed that data points are stored in the order of , P66.

함수(rotate(x, y))는, 도 5의 실시예의 경우와 같이 하여, 부등호를 충족시키지 않으므로, 거짓 값을 되돌린다. 이어서, 함수(aop(x, y))는, 함수(left(x))를 이용하여, 시계열적으로 전후하는 값의 차분값을 산출한다. 도 9에서, 차분값은 모두 마이너스가 된다. 따라서, 함수(left(x))는 부등호를 충족시키고, 참의 값을 되돌린다.The function rotate(x, y) returns a false value since it does not satisfy the inequality sign, as in the case of the embodiment of Fig. 5 . Next, the function (aop(x, y)) uses the function (left(x)) to calculate a difference value between the preceding and following values in time series. In Fig. 9, the difference values are all negative. Thus, the function left(x) satisfies the inequality sign and returns true.

상기 실시예에서는, 함수(rotate(x, y))가 거짓이며, 함수(left(x))가 참이다. 따라서, 함수(aop(x, y))는, 데이터 포인트의 집합(60)으로부터 도 9에 도시하는 회귀 직선(82)을 구하고, 도 10에 도시하는 바와 같이, 회귀 직선(82)의 기울기로부터 산출되는 각도(92a)에 180 도 플러스한 각도(92b)를 산출한다. 여기서, 회귀 직선(82)의 기울기는 회귀 직선(81)과 같고, 각도(91)는 각도(92a)와 같으나, 데이터 포인트 버퍼가 데이터 포인트를 저장한 순서가 역순이므로, 함수(aop(x, y))가 산출하는 각도는 180 도 상이함을 확인할 수 있다.In the above embodiment, the function (rotate(x, y)) is false and the function (left(x)) is true. Therefore, the function (aop(x, y)) obtains the regression line 82 shown in Fig. 9 from the set 60 of data points, and, as shown in Fig. 10, from the slope of the regression line 82 An angle 92b obtained by adding 180 degrees to the calculated angle 92a is calculated. Here, the slope of the regression line 82 is equal to the regression line 81 and the angle 91 is equal to the angle 92a, but since the data point buffer stores the data points in the reverse order, the function (aop(x, It can be seen that the angle calculated by y)) is 180 degrees different.

도 11은, 시간(t3)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다. 데이터 포인트 버퍼가 보지하는 데이터 포인트의 집합(70)은, 6 개의 데이터 포인트(P71 내지 P76)로 이루어진다. 또한, P71 내지 P76의 x 좌표의 값 및 y 좌표의 값은, 각각 P71(x71, y71), P72(x72, y72) …P76(x76, y76)이며, 데이터 포인트 버퍼는, P71, P72, …, P76의 순서대로 데이터 포인트를 저장한 것으로 한다.11 is a diagram showing an example of data points held by the data point buffer at time t3. The set 70 of data points held by the data point buffer consists of six data points P71 to P76. In addition, the values of the x-coordinate and the y-coordinate of P71 to P76 are P71(x 71 , y 71 ), P72(x 72 , y 72 ), respectively. P76(x 76 , y 76 ), and the data point buffers are P71, P72, ... It is assumed that data points are stored in the order of , P76.

도 12에서, P75와 P71의 x 좌표의 값의 차분값(x75-x71(=△x))이 abs(max(x)-min(x))에 대응하고, P76와 P71의 y 좌표의 값의 차분값(y76-y71(=△y))이 abs(max(y)-min(y))에 대응함을 확인할 수 있다. 도 11에서, 2Х△x<△y이다. 따라서, 함수(rotate(x, y))는, 부등호를 충족시키므로, 참 값을 되돌린다.In Fig. 12, the difference value (x 75 -x 71 (=Δx)) of the x-coordinate values of P75 and P71 corresponds to abs(max(x)-min(x)), and the y-coordinates of P76 and P71 It can be confirmed that the difference value (y 76 -y 71 (=Δy)) of the values of is corresponding to abs(max(y)-min(y)). 11, 2ХΔx<Δy. Thus, the function rotate(x, y) returns true because it satisfies the inequality sign.

이어서, 함수(aop(x, y))는, 함수(down(y))를 이용하여, 시계열적으로 전후하는 값의 차분값(y72-y71, y73-y72, …y76-y75)을 산출한다. 도 11에서, 차분값은 모두 플러스가 된다. 따라서, 함수(down(y))는 부등호를 충족시키지 않으므로, 거짓 값을 되돌린다.Next, the function (aop(x, y)) uses the function (down(y)) to determine the difference values (y 72 -y 71 , y 73 -y 72 , ...y 76 - y 75 ). In Fig. 11, the difference values are all positive. Thus, the function down(y) does not satisfy the inequality sign, so it returns a false value.

상기 실시예에서는, 함수(rotate(x, y))가 참이며, 함수(down(y))가 거짓이다. 따라서, 함수(aop(x, y))는, 데이터 포인트의 집합(70)으로부터 도 13에 도시하는 회귀 직선(83)을 구하고, 도 13에 도시하는 바와 같이, 회귀 직선(83)의 기울기로부터 산출되는 각도(93a)를, 90 도로부터 뺌으로써 각도(93b)를 산출한다. 여기서, 도 13에 나타내는 각도(93a)는, y를 독립 변수로 하고 x를 종속 변수로 한 경우의 회귀 직선(83)의 기울기로부터 산출되는 각도를, x를 독립 변수로 하고 y를 종속 변수로 한 좌표로 되돌린 경우의 위치에 대응시켜 나타내고 있다.In this embodiment, the function rotate(x, y) is true and the function down(y) is false. Accordingly, the function (aop(x, y)) obtains the regression line 83 shown in Fig. 13 from the set 70 of data points, and, as shown in Fig. 13, from the slope of the regression line 83 The angle 93b is calculated by subtracting the calculated angle 93a from 90 degrees. Here, the angle 93a shown in Fig. 13 is an angle calculated from the slope of the regression line 83 when y is the independent variable and x is the dependent variable, x is the independent variable and y is the dependent variable. It is shown in correspondence with the position in the case of returning to one coordinate.

도 14는, 시간(t4)에 있어서의 데이터 포인트 버퍼가 보지하는 데이터 포인트의 일예를 도시하는 도면이다. 시간(t4)은, 시간(t1)으로부터 시간(△t)이 경과된 시간이다. 데이터 포인트 버퍼가 보지하는 데이터 포인트의 집합(40')은, 8 개의 데이터 포인트(P45 내지 P52)로 이루어진다. 또한, P45 내지 P52의 x 좌표의 값 및 y 좌표의 값은, 각각 P45(x45, y45), P46(x46, y46) …P52(x52, y52)이며, 데이터 포인트 버퍼는, P45, P46, …, P52의 순서대로 데이터 포인트를 저장한 것으로 한다.14 is a diagram showing an example of data points held by the data point buffer at time t4. Time t4 is a time when time ?t has elapsed from time t1. A set 40' of data points held by the data point buffer consists of eight data points P45 to P52. In addition, the x-coordinate values and the y-coordinate values of P45 to P52 are P45(x 45 , y 45 ), P46(x 46 , y 46 ), respectively. P52(x 52 , y 52 ), and the data point buffers are P45, P46, ... It is assumed that data points are stored in the order of , P52.

도 15에서, P52와 P45의 x 좌표의 값의 차분값(x52-x45(=△x))이 abs(max(x)-min(x))에 대응하고, P46와 P52의 y 좌표의 값의 차분값(y46-y52(=△y))이 abs(max(y)-min(y))에 대응함을 확인할 수 있다. 도 14에서, 2Х△x<△y이다. 따라서, 함수(rotate(x, y))는, 부등호를 충족시키므로, 참 값을 되돌린다.In Fig. 15, the difference value (x 52 -x 45 (=Δx)) of the x-coordinate values of P52 and P45 corresponds to abs(max(x)-min(x)), and the y-coordinates of P46 and P52 It can be confirmed that the difference value (y 46 -y 52 (=Δy)) of the values of is corresponding to abs(max(y)-min(y)). 14, 2ХΔx<Δy. Thus, the function rotate(x, y) returns true because it satisfies the inequality sign.

이어서, 함수(aop(x, y))는, 함수(down(y))를 이용하여, 시계열적으로 전후하는 값의 차분값(y46-y45, y47-y46, …y52-y51)을 산출한다. 도 11에서, y46-y45 이외의 차분값은 마이너스가 된다. 따라서, 함수(down(y))는 부등호를 충족시키므로, 참 값을 되돌린다.Next, the function (aop(x, y)) uses the function (down(y)) to determine the difference values (y 46 -y 45 , y 47 -y 46 , ...y 52 - y 51 ) is calculated. In Fig. 11, a difference value other than y 46 -y 45 becomes negative. Thus, the function down(y) satisfies the inequality sign and returns true.

상기 실시예에서는, 함수(rotate(x, y))가 참이며, 함수(down(y))가 참이다. 따라서, 함수(aop(x, y))는, 데이터 포인트의 집합(40')으로부터 도 16에 도시하는 회귀 직선(84)을 구하고, 도 17에 도시하는 바와 같이, 회귀 직선(84)의 기울기로부터 산출되는 각도(94a)를, 90 도로부터 뺌으로써 산출한 각도(94b)에 180 도 플러스한 각도(94c)를 산출한다.In the above embodiment, the function rotate(x, y) is true and the function down(y) is true. Accordingly, the function (aop(x, y)) obtains the regression line 84 shown in Fig. 16 from the set 40' of the data points, and as shown in Fig. 17, the slope of the regression line 84 is An angle 94c obtained by subtracting the angle 94a calculated from from 90 degrees is calculated by adding 180 degrees to the calculated angle 94b.

도 18은, 본 발명의 일 실시 형태에 의한 전자 장치(10)가 데이터 포인트의 집합(120)으로부터 가상 캐릭터(121)를 제어하는 모습을 도시하는 도면이다. 도 18은, 터치 패널(17)로의 유저의 조작에 의하여 발생한 터치 이벤트에 대응하는 데이터 포인트를 가시화한 데이터 포인트의 집합(120)을 나타낸다. 전자 장치(10)는, 데이터 포인트의 집합(120)이 나타내는 각도(122)에 기초하여, 조작 대상 오브젝트인 가상 캐릭터(121)의 모션, 예를 들면, 걷기, 달리기, 방향 전환 등을 제어한다.18 is a diagram illustrating a state in which the electronic device 10 controls the virtual character 121 from the set 120 of data points according to an embodiment of the present invention. 18 shows a set 120 of data points in which data points corresponding to touch events generated by a user's manipulation of the touch panel 17 are visualized. The electronic device 10 controls the motion of the virtual character 121 that is the manipulation target object, for example, walking, running, changing direction, etc., based on the angle 122 indicated by the set of data points 120 . .

도 19는, 본 발명의 일 실시 형태에 의한 각도 결정부(24)의 정보 처리의 플로우차트를 도시하는 도면이다. 본 플로우차트는, 터치 이벤트가 발생하고, 각도 결정부(24)가 해당 터치 이벤트로부터 데이터 포인트를 취득한 때에 개시한다.19 : is a figure which shows the flowchart of the information processing of the angle determination part 24 by one Embodiment of this invention. This flowchart starts when a touch event occurs and the angle determining unit 24 acquires a data point from the touch event.

단계 101에서, 각도 결정부(24)는, 취득한 데이터 포인트를 데이터 포인트 버퍼에 저장한다. 이 때, 각도 결정부(24)는, 저장하는 데이터 포인트에, 저장 후의 경과 시간을 밀리 세컨드로 나타내는 T와, 데이터 포인트 버퍼에 저장할 수 있는 시간(보지 수명)을 밀리 세컨드로 나타내는 변수(D)를 관련짓는다.In step 101, the angle determining unit 24 stores the acquired data points in a data point buffer. At this time, in the data point to be stored, the angle determining unit 24 includes T representing the elapsed time after storage in milliseconds, and a variable D representing the time (holding life) that can be stored in the data point buffer in milliseconds. relate to

이어서, 단계 102에서, 각도 결정부(24)는, start 이벤트를 상태 결정부(25)로 출력한다.Next, in step 102 , the angle determining unit 24 outputs a start event to the state determining unit 25 .

이어서, 단계 103에서, 각도 결정부(24)는, 터치 이벤트가 발생했는지의 여부를 판정한다. 단계 103은, 본 플로우차트 개시 시부터 Ims 후에 실행된다. 터치 이벤트가 발생한 경우, 본 플로우차트는 단계 104로 진행되고, 터치 이벤트가 발생하지 않은 경우, 본 플로우차트는 단계 106로 진행된다.Next, in step 103, the angle determining unit 24 determines whether a touch event has occurred. Step 103 is executed Ims after the start of this flowchart. If a touch event has occurred, the flowchart proceeds to step 104 , and if no touch event has occurred, the flowchart proceeds to step 106 .

단계 104에서, 각도 결정부(24)는, 발생한 터치 이벤트가 touchend인지의 여부를 판정한다. 취득한 터치 이벤트가 touchend였던 경우, 본 플로우차트는 종료한다. 취득한 터치 이벤트가 touchend가 아니었던 경우, 본 플로우차트는 단계 105로 진행된다.In step 104, the angle determining unit 24 determines whether the generated touch event is a touchend. When the acquired touch event is touchend, this flowchart ends. If the acquired touch event is not a touchend, the flowchart proceeds to step 105 .

단계 105에서, 각도 결정부(24)는, 발생한 터치 이벤트로부터 데이터 포인트를 취득하고, 데이터 포인트 버퍼에 저장한다. 이 때, 각도 결정부(24)는, 저장하는 데이터 포인트에, 저장 후의 경과 시간을 밀리 세컨드로 나타내는 T와, 데이터 포인트 버퍼에 저장할 수 있는 시간을 밀리 세컨드로 나타내는 변수(D)를 관련짓는다.In step 105, the angle determining unit 24 acquires a data point from the generated touch event, and stores it in a data point buffer. At this time, the angle determining unit 24 associates the data point to be stored with T representing the elapsed time after storage in milliseconds and the variable D representing the time that can be stored in the data point buffer in milliseconds.

이어서, 단계 106에서, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트 중, 경과 시간(t)이 변수(D) 이상인 데이터 포인트의 보지를 종료한다. 각도 결정부(24)는, 데이터 포인트 버퍼에 저장하는 각 데이터 포인트에 대하여, 경과 시간(t)과 변수(D)를 비교하여, 경과 시간(t)이 변수(D) 이상인 경우, 해당 데이터 포인트의 보지를 종료한다.Next, in step 106, the angle determining unit 24 ends holding of the data points whose elapsed time t is equal to or greater than the variable D, among the data points held in the data point buffer. The angle determining unit 24 compares the elapsed time t with the variable D for each data point stored in the data point buffer, and when the elapsed time t is equal to or greater than the variable D, the corresponding data point quit pussy

이어서, 단계 107에서, 각도 결정부(24)는, 데이터 포인트 버퍼가 보지하는 데이터 포인트의 개수(n)가 변수(B)의 수 이상인지의 여부를 판정한다. 개수(n)가 변수(B) 이상인 경우, 본 플로우차트는 단계 108로 진행되고, 개수(n)가 변수(B) 미만이었던 경우, 본 플로우차트는 단계 113로 진행된다.Next, in step 107, the angle determining unit 24 determines whether or not the number n of data points held by the data point buffer is equal to or greater than the number of variables B. If the number n is equal to or greater than the variable B, the flowchart proceeds to step 108, and if the number n is less than the variable B, the flowchart proceeds to step 113.

단계 108에서, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 x 축의 값의 변위량 및 y 축의 값의 변위량에 기초하여, 독립 변수의 축으로서 x 축 및 y 축 중 어느 한 쪽의 축을 결정한다. 각도 결정부(24)는, 동시에 다른 한 쪽의 축을 종속 변수의 축으로서 결정한다.In step 108, the angle determining unit 24 determines one of the x-axis and the y-axis as an axis of the independent variable based on the displacement amount of the x-axis value and the displacement amount of the y-axis value in the data point held in the data point buffer. Decide on either axis. The angle determining unit 24 simultaneously determines the other axis as the axis of the dependent variable.

이어서, 단계 109에서, 각도 결정부(24)는, 단계 108에서 x 축이 독립 변수의 축으로서 결정된 경우, 식 (5)을 이용하여 기울기의 각도를 산출함으로써, 회귀 직선의 기울기의 각도를 결정한다. 하나의 예에서는, 각도 결정부(24)는, 식 (5)을 이용하여 기울기의 각도를 산출할 때, 0 도 내지 90 도 및 270 도 내지 360 도의 범위 내에서 산출한다. 각도 결정부(24)는, 단계 108에서 y 축이 독립 변수의 축으로서 결정된 경우, 식 (6)을 이용하여 기울기의 각도를 산출하고, 산출한 각도를 90 도로부터 뺌으로써, 회귀 직선의 기울기의 각도를 결정한다. 하나의 예에서는, 각도 결정부(24)는, 식 (6)을 이용하여 기울기의 각도를 산출할 때, 0 도 내지 90 도 및 270 도 내지 360 도의 범위 내에서 산출한다.Next, in step 109, when the x-axis is determined as the axis of the independent variable in step 108, the angle determination unit 24 determines the angle of inclination of the regression straight line by calculating the angle of inclination using Equation (5). do. In one example, when calculating the angle of inclination using Equation (5), the angle determining unit 24 calculates within the range of 0 degrees to 90 degrees and 270 degrees to 360 degrees. When the y-axis is determined as the axis of the independent variable in step 108, the angle determination unit 24 calculates the angle of the inclination using Equation (6), and subtracts the calculated angle from 90 degrees, so that the slope of the regression line is determine the angle of In one example, when calculating the angle of inclination using Equation (6), the angle determining unit 24 calculates within the range of 0 degrees to 90 degrees and 270 degrees to 360 degrees.

이어서, 단계 110에서, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다. 하나의 예에서는, 각도 결정부(24)는, 단계 108에서 x 축이 독립 변수의 축으로서 결정된 경우, 시계열적으로 전후하는 x 축의 값의 차분값을 각각 산출한다. 각도 결정부(24)는, 산출한 차분값이 마이너스가 되는 개수가 플러스가 되는 개수보다 많을 때, 회전량을 180 도로 결정하고, 적을 때, 회전량을 0 도로 결정한다. 하나의 예에서는, 각도 결정부(24)는, 단계 108에서 y 축이 독립 변수의 축으로서 결정된 경우, 시계열적으로 전후하는 y 축의 값의 차분값을 각각 산출한다. 각도 결정부(24)는, 산출한 차분값이 마이너스가 되는 개수가 플러스가 되는 개수보다 많을 때, 회전량을 180 도로 결정하고, 적을 때, 회전량을 0 도로 결정한다.Next, in step 110, the angle determining unit 24 determines whether to rotate 180 degrees with respect to the slope of the determined regression line based on the displacement direction as a set of data points held in the data point buffer. decide In one example, when the x-axis is determined as the axis of the independent variable in step 108 , the angle determination unit 24 calculates the difference values between the values of the x-axis before and after the time series, respectively. The angle determining unit 24 determines the rotation amount by 180 degrees when the number of calculated difference values becomes negative is greater than the positive number, and determines the rotation amount by 0 degrees when less. In one example, when the y-axis is determined as the axis of the independent variable in step 108 , the angle determining unit 24 calculates the difference values between the values of the y-axis before and after the time series, respectively. The angle determining unit 24 determines the rotation amount by 180 degrees when the number of calculated difference values becomes negative is greater than the positive number, and determines the rotation amount by 0 degrees when less.

이어서, 단계 111에서, 각도 결정부(24)는, 결정된 회귀 직선의 기울기 및 결정된 회전량에 기초하여 각도를 결정한다. 구체적으로는, 각도 결정부(24)는, 결정된 회귀 직선의 기울기에 대응하는 각도로 결정된 회전량을 가산함으로써 각도를 결정한다. 예를 들면, 회전량이 0 도인 경우, 각도 결정부(24)가 결정하는 각도는, 결정된 회귀 직선의 기울기에 대응하는 각도가 된다. 각도 결정부(24)는, angle 이벤트가 결정된 각도와 함께 상태 결정부(25)로 출력하고, 단계 112로 진행된다.Next, in step 111, the angle determining unit 24 determines the angle based on the determined inclination of the regression straight line and the determined rotation amount. Specifically, the angle determining unit 24 determines the angle by adding the determined rotation amount to the angle corresponding to the determined slope of the regression straight line. For example, when the rotation amount is 0 degrees, the angle determined by the angle determining unit 24 is an angle corresponding to the determined slope of the regression line. The angle determination unit 24 outputs the angle event together with the determined angle to the state determination unit 25 , and proceeds to step 112 .

단계 107에서, 개수(n)가 변수(B) 미만이었을 경우, 단계 113에서, 각도 결정부(24)는, keep 이벤트를 상태 결정부(25)로 출력하고, 단계 112로 진행된다.In step 107 , when the number n is less than the variable B, in step 113 , the angle determination unit 24 outputs a keep event to the state determination unit 25 , and proceeds to step 112 .

단계 112에서, 본 플로우차트는, 예를 들면, 게임 어플리케이션이 종료됨 등에 의하여 종료되지 않는 한, 단계 103로 되돌아온다. 각도 결정부(24)는, 단계 103 내지 단계 112의 처리를 Ims마다 실행한다.In step 112, the flowchart returns to step 103 unless it is ended, for example, by ending the game application or the like. The angle determining unit 24 executes the processing of steps 103 to 112 every Ims.

본 플로우차트가 종료되면, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지하는 데이터 포인트를 모두 삭제한다.When this flowchart ends, the angle determining unit 24 deletes all data points held in the data point buffer.

이어서, 본 발명의 실시 형태에 의한 전자 장치(10)의 주된 작용 효과에 대하여 설명한다. 본 실시 형태에서는, 터치 패널(17) 상에서 손가락을 스와이프시켰을 때, 예를 들면, 100ms 등의 매우 짧은 시간에 6 회 이상의 터치 이벤트가 발생한다고 하는 투영형 정전 용량 방식 터치 패널의 특징을 이용하고 있다. 전자 장치(10)가 실장하는 소프트웨어의 시스템 아키텍쳐는, 각도 결정부(24), 상태 결정부(25), 어플리케이션부(26)가 제1 층, 제2 층, 제3 층에 각각 대응하는 3 층 구조를 취하고, 제3 층은, 게임 어플리케이션에 대응한다. 제1 층은, 발생하는 복수의 터치 이벤트의 집합(데이터 포인트의 집합)을 대상으로 하고, 스와이프 방향을 360 도의 리니어한 각도로 산출한다. 제1 층은, 매우 짧은 시간에 발생하는 터치 이벤트를 이용할 수 있으므로, 고속으로 각도를 계속 산출하는 것이 가능해진다. 또한, 제1 층은, 데이터 포인트 버퍼가 매우 짧은 미리 정해진 보지 시간(예를 들면, 165ms)만큼 보지하는 데이터 포인트의 집합이 나타내는 각도를 구함으로써, 기준점을 이용하지 않고 터치 패널(17)에 대하여 터치 조작을 행한 유저가 의도하는 방향의 각도를 구하는 것이 가능해진다.Next, the main effects of the electronic device 10 according to the embodiment of the present invention will be described. In this embodiment, when a finger is swiped on the touch panel 17, for example, a feature of the projected capacitive touch panel that 6 or more touch events occur in a very short time such as 100 ms is used. have. In the system architecture of software mounted on the electronic device 10 , the angle determining unit 24 , the state determining unit 25 , and the application unit 26 correspond to the first layer, the second layer, and the third layer, respectively. It takes a layered structure, and the third layer corresponds to a game application. The first layer targets a set of a plurality of generated touch events (a set of data points), and calculates a swipe direction as a linear angle of 360 degrees. The first layer can use touch events that occur in a very short time, making it possible to continuously calculate the angle at high speed. In addition, the first layer obtains the angle indicated by the set of data points held by the data point buffer for a very short predetermined holding time (eg, 165 ms), so that the touch panel 17 is not used as a reference point. It becomes possible to obtain|require the angle of the direction which the user who performed touch operation intends.

또한, 본 실시 형태의 전자 장치(10)는, 스와이프 등의 유저의 조작이 복잡해도, 100ms 등의 매우 짧은 시간에서는, 등속 직선 운동으로서 모델화할 수 있으므로, 등속도 운동의 각도를 연속적으로 산출함으로써, 임의의 비선형 함수(≒인간의 조작)를 예측 및 근사시킬 수 있다고 하는 컨셉에 기초하여 설계된 것이다.In addition, since the electronic device 10 of this embodiment can model as a constant velocity linear motion in a very short time, such as 100 ms, even if a user's operation, such as a swipe, is complicated, it calculates the angle of a constant velocity motion continuously. It is designed based on the concept that arbitrary nonlinear functions (≈ human manipulation) can be predicted and approximated by doing so.

제1 층은, 변수(I)의 값이 비교적 크게 설정된 경우, 비교적 낮은 빈도로 각도를 산출한다. 이 경우, 제1 층은, 터치 이벤트가 발생하기 시작한 직후에 있어서도, 예를 들면, 유저가 조작을 개시한 직후에 있어서도, 데이터 포인트 버퍼에 비교적 많은 데이터 포인트가 보지되어 있는 상태에서, 각도를 산출하게 된다. 이와 같이, 변수(I)의 값을 비교적 크게 설정함으로써, 유저의 조작을 비교적 완만하게 반영한 각도를 산출하는 것이 가능해진다. 한편, 제1 층은, 변수(I)의 값이 비교적 작게 설정된 경우, 비교적 높은 빈도로 각도를 산출한다. 이 경우, 제1 층은, 터치 이벤트가 발생하기 시작한 직후에서는, 예를 들면, 유저가 조작을 개시한 직후에서는, 데이터 포인트 버퍼에 비교적 소수의 데이터 포인트가 보지되어 있는 상태에서 각도를 산출하게 된다. 이와 같이, 변수(I)의 값을 비교적 작게 설정함으로써, 유저의 조작을 비교적 즉석에서 반영한 각도를 산출하는 것이 가능해진다.The first layer calculates the angle at a relatively low frequency when the value of the variable I is set to be relatively large. In this case, the first layer calculates the angle in a state where a relatively large number of data points are held in the data point buffer, even immediately after the touch event starts to occur, for example, immediately after the user starts the operation. will do Thus, by setting the value of the variable I relatively large, it becomes possible to calculate the angle which reflected the user's operation relatively gently. On the other hand, the first layer calculates the angle at a relatively high frequency when the value of the variable I is set to be relatively small. In this case, the first layer calculates the angle in a state where a relatively small number of data points are held in the data point buffer immediately after the touch event starts to occur, for example, immediately after the user starts the operation. . Thus, by setting the value of the variable I relatively small, it becomes possible to calculate the angle which reflected the user's operation relatively immediately.

제1 층은, 데이터 포인트의 집합이 나타내는 각도를 산출함에 있어서, 최소 이승법을 이용하여 회귀 직선의 기울기를 산출한다. x를 독립 변수 및 y를 종속 변수로서 고정한 경우, y 축에 따른 기울기의 경우 등은 기울기를 산출하는 것이 어려우므로, 제1 층은, 데이터 포인트의 변위량으로부터 독립 변수 및 종속 변수를 결정한 다음에, 회귀 직선의 기울기를 산출한다. 이러한 구성으로 함으로써, 제1 층은, 안정적으로 회귀 직선의 기울기를 산출하는 것이 가능해진다.The first layer calculates the slope of the regression line using the least squares method when calculating the angle indicated by the set of data points. Since it is difficult to calculate the slope when x is fixed as the independent variable and y as the dependent variable, the slope along the y axis, etc., the first layer determines the independent variable and the dependent variable from the amount of displacement of the data point, and then Calculate the slope of the regression line. By setting it as such a structure, a 1st layer becomes possible to calculate the slope of a regression straight line stably.

제1 층은, 데이터 포인트의 집합이 나타내는 각도를 산출함에 있어서, 유저가 터치 패널(17) 상에서 손가락을 움직이는 대략적인 방향에 대응하는 데이터 포인트의 집합으로서의 변위 방향에 기초하여, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다. 이와 같이, 최소 이승법을 이용하여 산출된 회귀 직선의 기울기로부터는 파악할 수 없는 회전량을 결정함으로써, 터치 패널(17)에 대하여 터치 조작을 행한 유저가 의도하는 방향의 각도를 구하는 것이 가능해진다.The first layer calculates the angle indicated by the set of data points, the slope of the regression line determined based on the displacement direction as the set of data points corresponding to the approximate direction in which the user moves the finger on the touch panel 17. Determines the amount of rotation indicating whether to rotate 180 degrees with respect to . In this way, by determining the amount of rotation that cannot be grasped from the inclination of the regression line calculated using the least squares method, it becomes possible to obtain the angle of the direction intended by the user who performed the touch operation on the touch panel 17 .

제1 층은, 미리 정해진 처리 시간마다, 예를 들면, 미리 정해진 처리 시간으로서 게임 어플리케이션에 있어서의 프레임 레이트에 대응하는 시간마다, 데이터 포인트의 집합을 대상으로 하여, 스와이프 방향에 대응하는 각도를 산출한다. 제2 층은, 계속적으로 출력되는 각도 정보를 이용하여, 미리 정해진 처리 시간마다, 가상 콘트롤러의 기울기의 상태를 나타내는 벡터량(각도 및 크기)을 결정하고, 게임 어플리케이션으로 출력한다. 이러한 구성으로 함으로써, 본 실시 형태에서는, 게임 어플리케이션에 대하여, 미리 정해진 처리 시간마다 산출된 각도에 기초한 입력을 행하는 것이 가능해진다. 또한, 이러한 구성으로 함으로써, 어느 층도, 과거의 터치 좌표를 기준점으로서 이용하지 않고, 제1 층이 산출하는 프레임 레이트마다의 고빈도로 정확한 이동 각도에 기초한 입력을 행하는 것이 가능해진다. 이와 같이, 본 실시 형태에서는, 전자 장치(10)는, 종래 기술에 있어서의 가상 콘트롤러에서 사용되고 있던, 개시점(개시 좌표) 또는 종료점(종료 좌표)이라고 하는 점이라고 하는 공간적인 개념을 사용하지 않고 각도를 산출한다.For each predetermined processing time, for example, every time corresponding to the frame rate in the game application as a predetermined processing time, the first layer targets a set of data points, and determines the angle corresponding to the swipe direction. Calculate. The second layer uses the continuously output angle information to determine a vector amount (angle and magnitude) representing the state of the inclination of the virtual controller at each predetermined processing time, and output it to the game application. By setting it as such a structure, in this embodiment, it becomes possible to perform an input based on the angle calculated for every predetermined processing time with respect to a game application. Moreover, by setting it as such a structure, it becomes possible to perform an input based on an accurate movement angle at high frequency for every frame rate calculated by the 1st layer, without using past touch coordinates as a reference point in any layer. As described above, in the present embodiment, the electronic device 10 does not use the spatial concept of a point called a start point (start coordinate) or an end point (end coordinate), which has been used in the virtual controller in the prior art. Calculate the angle.

또한, 본 실시 형태에서는, 종래 기술에 있어서의 가상 콘트롤러, 즉, 기준 좌표와 현재의 지시 좌표와의 사이의 위치 관계에 의하여 얻어지는 벡터를 이용한 가상 콘트롤러와는 달리, 기준 좌표의 개념이 없으므로, 기준 좌표를 정하는 가상 콘트롤러보다 높은 응답성을 제공하는 것이 가능하다. 특히, 가상 캐릭터 등의 방향 전환 조작에 있어서는, 방향 전환 전과는 크게 다른 방향으로 유저가 터치 패널 상의 조작을 행했다고 해도, 현재의 지시 좌표가 기준 좌표에 가까워진다고 하는 개념 그 자체가 없으므로, 유저의 의도한 조작 내용에 재빠르게 응답하여 방향 전환할 수 있으므로 우위성이 현저하다. 또한, 상기와 같이 구성됨으로써, 스마트폰으로 조작하는 유저에 대하여 한 손으로의 조작을 가능케 할 수 있다. 이에 의하여, 유저가 종래 기술에 있어서의 가상 조이스틱의 조작을 행함에 있어서, 항상 기준 좌표를 의식할 필요가 있어, 한 손으로의 조작이 어려운 경우가 있다고 하는 문제점을 해소할 수 있다. 이와 같이, 본 실시 형태에서는, 보다 고속으로 직감적인 조작을 가능케 하는 가상 콘트롤러를 실현하고 있다.In addition, in this embodiment, unlike the virtual controller in the prior art, that is, a virtual controller using a vector obtained by the positional relationship between the reference coordinates and the current pointing coordinates, since there is no concept of the reference coordinates, the reference It is possible to provide a higher responsiveness than a virtual controller that determines the coordinates. In particular, in a direction change operation of a virtual character or the like, even if the user operates on the touch panel in a direction significantly different from before the direction change, there is no concept itself that the current indicated coordinates approach the reference coordinates. The superiority is remarkable because it can change direction in response to the intended operation contents quickly. In addition, by being configured as described above, it is possible to enable one-handed operation with respect to a user who operates with a smartphone. Thereby, when a user operates the virtual joystick in a prior art, it is necessary to always be conscious of a reference coordinate, and the problem that operation with one hand may be difficult can be solved. In this way, in the present embodiment, a virtual controller that enables intuitive operation at a higher speed is realized.

또한, 본 실시 형태에서는, 전자 장치(10)는, 종래 기술에 있어서의 가상 콘트롤러와는 다르게, 기준 좌표로부터의 손가락의 이동 거리에 따른 입력은 아니므로, 손가락의 이동량이 보다 적은 조작에 의하여, 유저가 의도하는 조작을 실현하는 것이 가능해진다. 따라서, 종래 기술과 비교하여, 보다 작은 실장 면적으로 실현하는 것이 가능해진다. 예를 들면, 터치 패널(17)의 크기에 상관없이, 동일한 조작성을 실현하는 것이 가능해진다.In addition, in the present embodiment, the electronic device 10, unlike the virtual controller in the prior art, does not input according to the movement distance of the finger from the reference coordinates, so by manipulation with a smaller amount of movement of the finger, It becomes possible to realize the operation intended by the user. Therefore, compared with the prior art, it becomes possible to implement|achieve with a smaller mounting area. For example, it becomes possible to realize the same operability regardless of the size of the touch panel 17 .

또한, 본 실시 형태의 전자 장치(10)가 제공하는 가상 콘트롤러의 기술은, 스와이프 조작으로부터의 각도의 인식을 수리적으로 모델화하고 있으므로, 360 도의 방향 이동, 가속 및 감속, 격투 게임과 같은 커멘드 입력 등의 폭넓은 장르에 적용 가능하다.In addition, since the technology of the virtual controller provided by the electronic device 10 of the present embodiment mathematically models the recognition of an angle from a swipe operation, 360-degree direction movement, acceleration and deceleration, and command input such as a fighting game It can be applied to a wide range of genres such as

상기의 작용 효과는, 특별히 언급이 없는 한, 다른 실시 형태 또는 다른 실시예에서도 마찬가지이다.The above effects are the same in other embodiments or other examples, unless otherwise specified.

본 발명의 다른 실시 형태에서는, 상기에서 설명한 본 발명의 실시 형태의 기능 또는 플로우차트에 도시하는 정보 처리를 실현하는 프로그램 또는 해당 프로그램을 저장한 컴퓨터 판독 가능한 기억 매체로 할 수도 있다. 또한, 다른 실시 형태에서는, 상기에서 설명한 본 발명의 실시 형태의 기능 또는 플로우차트에 도시하는 정보 처리를 실현하는 방법으로 할 수도 있다. 또한, 다른 실시 형태에서는, 상기에서 설명한 본 발명의 실시 형태의 기능 또는 플로우차트에 도시하는 정보 처리를 실현하는 프로그램을 컴퓨터에 공급할 수 있는 서버로 할 수도 있다. 또한, 다른 실시 형태에서는, 상기에서 설명한 본 발명의 실시 형태의 기능 또는 플로우차트에 도시하는 정보 처리를 실현하는 가상 머신으로 할 수도 있다.In another embodiment of the present invention, a program for realizing the functions of the above-described embodiment of the present invention or information processing shown in the flowchart, or a computer-readable storage medium storing the program may be used. Moreover, in another embodiment, it can also be set as the method of realizing the function of embodiment of this invention demonstrated above or the information processing shown in a flowchart. Moreover, in another embodiment, the server which can supply the program which implement|achieves the function of embodiment of this invention demonstrated above or the information processing shown in a flowchart to a computer can also be set as it. Moreover, in another embodiment, it can be set as the virtual machine which implement|achieves the function of embodiment of this invention demonstrated above or the information processing shown in a flowchart.

이하에 본 발명의 실시 형태의 변형예에 대하여 설명한다. 이하에서 말하는 변형예는, 모순이 생기지 않는 한, 적절히 조합하여 본 발명의 임의의 실시 형태에 적용할 수 있다.Modifications of the embodiments of the present invention will be described below. Modifications mentioned below can be applied to any embodiment of the present invention by appropriately combining them as long as there is no contradiction.

하나의 변형예에서는, 전자 장치(10)는, 가상 공간 상에 가상적인 오브젝트를 배치하고, 해당 가상 공간 내에 배치되는 가상 카메라에 의하여 촬영한 게임 화상을 유저에게 제시하고, 게임을 진행하는 게임 어플리케이션이 인스톨되어 있다. 전자 장치(10)는, 해당 게임 어플리케이션이 실행되면, 가상 공간 내에 배치되는 가상적인 오브젝트 등을, 가상 공간 내에 배치되는 가상 카메라에 의하여 촬영한 게임 화상을 터치 패널(17)에 표시하여, 유저의 조작에 따라 가상 카메라를 제어한다. 이와 같이, 전자 장치(10)는, 해당 게임 어플리케이션이 실행되면, 유저의 조작에 따라, 조작 대상 오브젝트인 가상 카메라를 제어하기 위한 가상 콘트롤러를 제공한다. 가상 카메라의 제어란, 가상 공간에 배치된 가상 카메라의 움직임 또는 시야 영역의 제어이다.In one modified example, the electronic device 10 arranges a virtual object in a virtual space, presents a game image captured by a virtual camera disposed in the virtual space to the user, and a game application for playing the game This is installed. When the corresponding game application is executed, the electronic device 10 displays, on the touch panel 17, a game image captured by a virtual camera disposed in the virtual space and a virtual object disposed in the virtual space on the touch panel 17 . Control the virtual camera according to the operation. As described above, when the corresponding game application is executed, the electronic device 10 provides a virtual controller for controlling the virtual camera, which is a manipulation target object, according to a user's manipulation. The virtual camera control is a movement of a virtual camera arranged in a virtual space or control of a viewing area.

도 20은, 본 발명의 일 실시 형태에 의한 전자 장치(10)가 표시하는 화상을 촬영하는 가상 공간 내에 배치된 가상 카메라(131)를 나타내는 도면이다. 도 20은, 가상 카메라(131)의 위치와, 가상 카메라(131)의 시선 방향(132)을 나타낸다. 시선 방향(132)은 가상 카메라(131)의 위치를 시점으로 하는 3 차원 벡터로 정해진다. 가상 카메라(131)로부터 시선 방향(132)으로 일정한 시야각에서 시야 영역이 정해지고, 해당 시야 영역에 시선 방향(132)과 수직인 면인 2 차원 스크린(133)이 정해진다. 2 차원 스크린(133)에 대하여, 가상 공간 내의 가상적인 오브젝트가 투영되어, 2 차원 화상이 형성된다.20 is a diagram illustrating a virtual camera 131 disposed in a virtual space for capturing an image displayed by the electronic device 10 according to an embodiment of the present invention. 20 illustrates a position of the virtual camera 131 and a gaze direction 132 of the virtual camera 131 . The gaze direction 132 is determined by a three-dimensional vector having the position of the virtual camera 131 as a viewpoint. A viewing area is determined at a constant viewing angle from the virtual camera 131 in the viewing direction 132 , and a two-dimensional screen 133 , which is a plane perpendicular to the viewing direction 132 , is determined in the viewing area. With respect to the two-dimensional screen 133, a virtual object in the virtual space is projected, and a two-dimensional image is formed.

하나의 변형예에서는, 입력 장치(12)와 표시 장치(13)는, 별도의 위치에 배치되는 별개의 형태이다. 이 경우, 입력 장치(12)는, 터치 패널 또는 투영형 정전 용량 방식 터치 패널과 동등한 기능을 가지는 디바이스이다. 표시 장치(13)는, 프로세서(11)의 제어에 따라, 어플리케이션 화면 등을 전자 장치(10)의 유저에게 표시하는 것이면 되고, 예를 들면, 액정 디스플레이, 유기 EL을 이용한 디스플레이 또는 플라즈마 디스플레이 등이다.In one modified example, the input device 12 and the display device 13 are separate types arranged at separate positions. In this case, the input device 12 is a device having a function equivalent to that of a touch panel or a projected capacitive touch panel. The display device 13 may display an application screen or the like to the user of the electronic device 10 under the control of the processor 11, for example, a liquid crystal display, a display using organic EL, or a plasma display. .

하나의 변형예에서는, 각도 결정부(24)는, 최소 이승법 이외의 기존의 방법을 이용하여, 회귀 직선의 기울기를 산출한다. 이 경우, 각도 결정부(24)는, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정하지 않고, 이에 수반하여, 독립 변수의 축 및 종속 변수의 축을 결정하지 않는다. 예를 들면, 칼망 필터 또는 파티클 필터 등의 알고리즘을 이용할 수 있다.In one modification, the angle determining unit 24 calculates the slope of the regression line using an existing method other than the least squares method. In this case, the angle determining unit 24 does not determine the amount of rotation indicating whether to rotate 180 degrees with respect to the determined slope of the regression straight line, and, accordingly, does not determine the axis of the independent variable and the axis of the dependent variable. For example, an algorithm such as a Calment filter or a particle filter may be used.

하나의 변형예에서는, 각도 결정부(24)는, 변수(D)를 정하지 않고, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트 중, 미리 정해진 보지 시간을 초과했다고 판단된 데이터 포인트의 보지를 종료하지 않는다. 이 경우, 각도 결정부(24)는, 변수(I)로 정하는 시간마다, 변수(I)로 정하는 시간씩 늦춘 특정 시간대에 저장된 데이터 포인트를 참조함으로써 각도를 결정한다.In one modification, the angle determining unit 24 does not determine the variable D and does not end holding of the data points held in the data point buffer, which is determined to have exceeded the predetermined holding time. . In this case, the angle determining unit 24 determines the angle by referring to data points stored in a specific time period delayed by the time determined by the variable (I) for each time determined by the variable (I).

하나의 변형예에서는, 각도 결정부(24)는, 변수(V)를 정하지 않는다. 이 경우, 각도 결정부(24)는, 독립 변수의 분산의 값에 상관없이, 함수(aop(x, y))를 이용하여 각도를 산출하여 결정한다.In one modification, the angle determining unit 24 does not determine the variable V. In this case, the angle determining unit 24 calculates and determines the angle using the function (aop(x, y)) regardless of the value of the variance of the independent variable.

하나의 변형예에서는, 전자 장치(10)는 중력 방향을 판정하는 것이 가능한 가속도 센서를 구비한다. 각도 결정부(24)는, 가속도 센서로부터 취득된 정보를 이용하여 가중 계수를 결정한다. 예를 들면, 스마트폰이 세로 들기가 되어 터치 패널(17)의 y 축이 중력 방향이 되는 경우, 각도 결정부(24)는 w를 2로 결정한다. 한편, 스마트폰이 가로 들기가 되어 터치 패널(17)의 x 축이 중력 방향이 되고, 한편 게임 어플리케이션이 구비하는 게임 엔진이 종횡의 좌표의 변환을 하지 않는 경우, 각도 결정부(24)는 w를 0.5 등의 1보다 작은 값으로 결정한다.In one variant, the electronic device 10 is provided with an acceleration sensor capable of determining the direction of gravity. The angle determining unit 24 determines a weighting coefficient using information obtained from the acceleration sensor. For example, when the smartphone is vertically raised and the y-axis of the touch panel 17 is in the direction of gravity, the angle determining unit 24 determines w as 2. On the other hand, when the smartphone is raised horizontally and the x-axis of the touch panel 17 becomes the direction of gravity, on the other hand, when the game engine provided in the game application does not convert the vertical and horizontal coordinates, the angle determining unit 24 is w is determined to be a value less than 1, such as 0.5.

하나의 변형예에서는, 각도 결정부(24)는, 터치 이벤트를 취득할 때, 2 개의 변수로 이루어지는 수치의 조(x, y)를 취득하고, 데이터 포인트 취득 시간(t)을 대응시키지 않고, 2 개의 변수로 이루어지는 수치의 조(x, y)를 데이터 포인트 버퍼에 저장한다. 예를 들면, 각도 결정부(24)는, 데이터 포인트 취득 시간(t)에 대응하는 정보를 데이터 포인트 버퍼 이외의 기억 장치(14) 내의 메모리 영역 등에 기억하고, 데이터 포인트 버퍼에 저장하는 데이터에 대응시켜 관리할 수 있다.In one modification, the angle determining unit 24 acquires a set of numerical values (x, y) consisting of two variables, when acquiring a touch event, and does not correspond to a data point acquisition time (t), A set of values consisting of two variables (x, y) is stored in the data point buffer. For example, the angle determining unit 24 stores information corresponding to the data point acquisition time t in a memory area or the like in the storage device 14 other than the data point buffer, and corresponds to the data stored in the data point buffer. can be managed by

이상에서 설명한 처리 또는 동작에 있어서, 어느 한 단계에서, 그 단계에서는 아직 이용할 수 없을 데이터를 이용하고 있는 등의 처리 또는 동작 상의 모순이 생기지 않는 한, 처리 또는 동작을 자유롭게 변경할 수 있다. 또한, 이상에서 설명한 각 실시예는, 본 발명을 설명하기 위한 예시이며, 본 발명은 이들 실시예로 한정되는 것은 아니다. 본 발명은, 그 요지를 일탈하지 않는 한, 다양한 형태로 실시할 수 있다.In the processing or operation described above, the processing or operation can be freely changed at any one stage, as long as there is no inconsistency in the processing or operation such as using data that is not yet available at that stage. In addition, each Example described above is an illustration for demonstrating this invention, and this invention is not limited to these Examples. The present invention can be implemented in various forms without departing from the gist thereof.

10 : 전자 장치
11 : 프로세서
12 : 입력 장치
13 : 표시 장치
14 : 기억 장치
15 : 통신 장치
16 : 버스
17 : 터치 패널
21 : 입력부
22 : 표시부
23 : 제어부
24 : 각도 결정부
25 : 상태 결정부
26 : 어플리케이션부
31, 33, 35 : 각도
32, 34, 36 : 방향
81, 82, 83, 84 : 회귀 직선
91, 92a, 92b, 93a, 93b, 94a, 94b, 94c : 각도
120 : 집합
121 : 가상 캐릭터
122 : 각도
131 : 가상 카메라
132 : 시선 방향
133 : 2 차원 스크린
10: electronic device
11: Processor
12: input device
13: display device
14: memory
15: communication device
16 : bus
17: touch panel
21: input unit
22: display
23: control
24: angle determining unit
25: state determination unit
26: application part
31, 33, 35 : angle
32, 34, 36: direction
81, 82, 83, 84: regression line
91, 92a, 92b, 93a, 93b, 94a, 94b, 94c: angle
120: set
121: virtual character
122 : angle
131: virtual camera
132: gaze direction
133: two-dimensional screen

Claims (14)

터치 패널을 구비하는 전자 장치에서 실행되는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체로서,
해당 전자 장치에,
상기 터치 패널로의 유저의 조작에 의하여 발생한 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하는 단계와,
상기 보지되어 있는 데이터 포인트 중 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료하는 단계와,
상기 보지되어 있는 데이터 포인트에 기초하여 회귀 직선의 기울기를 결정하는 단계와,
상기 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여 상기 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정하는 단계와,
상기 결정된 회귀 직선의 기울기 및 상기 결정된 회전량에 기초하여, 상기 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하는 단계
를 실행시키는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
A computer-readable storage medium storing a program executed in an electronic device having a touch panel, comprising:
on that electronic device;
holding data points indicated by values of a first axis and a value of a second axis obtained based on a touch event generated by a user's manipulation of the touch panel;
terminating holding of data points that have exceeded a predetermined holding time among the held data points;
determining the slope of the regression line based on the held data points;
determining a rotation amount for rotating the determined slope of the regression straight line based on the displacement direction as the set of held data points;
Determining an angle for the user to control the manipulation target object in the virtual space based on the determined inclination of the regression straight line and the determined rotation amount
A computer-readable storage medium storing a program for executing
제1항에 있어서,
상기 회전량을 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의 시계열적으로 전후하는 데이터 포인트의 변위 방향에 기초하여, 상기 조작 대상 오브젝트를 제어하기 위한 각도를 결정함에 있어서, 상기 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
According to claim 1,
The step of determining the rotation amount,
In determining the angle for controlling the manipulation target object based on the displacement direction of the data point back and forth in time series in the held data point, whether to rotate 180 degrees with respect to the determined slope of the regression straight line A computer-readable storage medium storing a program for determining an amount of rotation indicating whether or not.
제1항 또는 제2항에 있어서,
상기 프로그램은, 상기 전자 장치에,
상기 보지되어 있는 데이터 포인트에 있어서의 상기 제1 축의 값의 변위량 및 상기 제2 축의 값의 변위량에 기초하여, 독립 변수의 축으로서 해당 제1 축 및 해당 제2 축 중 어느 한 쪽의 축을 결정하는 단계와, 다른 한 쪽의 축을 종속 변수의 축으로서 결정하는 단계를 더 실행시키고,
상기 회귀 직선의 기울기를 결정하는 단계는,
상기 결정된 독립 변수의 축 및 종속 변수의 축에 더 기초하여, 회귀 직선의 기울기를 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
3. The method of claim 1 or 2,
The program, in the electronic device,
Based on the amount of displacement of the value of the first axis and the amount of displacement of the value of the second axis in the held data point, one of the first axis and the second axis is determined as the axis of the independent variable further executing the step and determining the other axis as the axis of the dependent variable;
The step of determining the slope of the regression line,
A computer-readable storage medium storing a program for determining a slope of a regression straight line further based on the determined axis of the independent variable and the axis of the dependent variable.
제3항에 있어서,
상기 어느 한 쪽의 축을 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의, 상기 제1 축의 최대값과 최소값의 차분값 및 상기 제2 축의 최대값과 최소값의 차분값에 기초하여, 독립 변수의 축으로서 상기 어느 한 쪽의 축을 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
4. The method of claim 3,
The step of determining either axis is,
determining the one axis as the axis of the independent variable based on the difference value between the maximum value and the minimum value of the first axis and the difference value between the maximum value and the minimum value of the second axis in the held data point A computer-readable storage medium storing a program.
제3항에 있어서,
상기 어느 한 쪽의 축을 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의, 상기 제1 축의 최대값과 최소값의 차분값에 대하여 가중치 부여를 행한 값 및 상기 제2 축의 최대값과 최소값의 차분값의 크기를 비교함으로써, 독립 변수의 축으로서 상기 어느 한 쪽의 축을 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
4. The method of claim 3,
The step of determining either axis is,
By comparing the weighted value of the difference between the maximum and minimum values of the first axis and the difference between the maximum and minimum values of the second axis in the held data point, the axis of the independent variable A computer-readable storage medium storing a program for determining one of the axes as
제3항에 있어서,
상기 회전량을 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의 시계열적으로 전후하는, 상기 결정된 독립 변수의 축의 값의 차분값의 음양의 수량을 비교함으로써, 상기 조작 대상 오브젝트를 제어하기 위한 각도를 결정함에 있어서, 상기 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
4. The method of claim 3,
The step of determining the rotation amount,
In determining the angle for controlling the manipulation target object by comparing the positive and negative quantities of the difference values of the values of the axes of the determined independent variables before and after in time series at the held data point, the determined regression A computer-readable storage medium storing a program for determining an amount of rotation indicating whether to rotate 180 degrees with respect to the inclination of a straight line.
제3항에 있어서,
상기 회귀 직선의 기울기를 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 평균 및 종속 변수의 평균을 결정하는 단계와,
상기 결정된 평균을 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 편차 및 종속 변수의 편차를 결정하는 단계와,
상기 결정된 독립 변수의 편차를 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의 독립 변수의 분산을 결정하는 단계와,
상기 결정된 독립 변수의 편차 및 종속 변수의 편차를 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의 공분산을 결정하는 단계와,
상기 결정된 공분산을 상기 결정된 독립 변수의 분산으로 나눔으로써 회귀 직선의 기울기를 결정하는 단계
를 포함하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
4. The method of claim 3,
The step of determining the slope of the regression line,
determining the mean of the independent variable and the mean of the dependent variable for the retained data points;
using the determined mean to determine a deviation of the independent variable and a deviation of the dependent variable at the retained data point;
using the determined variance of the independent variable to determine a variance of the independent variable in the retained data point;
determining the covariance in the retained data points using the determined deviation of the independent variable and the deviation of the dependent variable;
determining the slope of the regression line by dividing the determined covariance by the variance of the determined independent variable;
A computer-readable storage medium storing a program comprising a.
제7항에 있어서,
상기 제1 축은, 상기 터치 패널의 센서가 배열되는 방향의 짧은 쪽 방향을 나타내는 X 축이며,
상기 제2 축은, 상기 터치 패널의 센서가 배열되는 방향의 긴 쪽 방향을 나타내고, 상기 제1 축에 직교하는 Y 축이며,
상기 회귀 직선의 기울기를 결정하는 단계는,
상기 결정된 독립 변수의 축이 상기 제2 축인 경우, 상기 결정된 공분산을 상기 결정된 독립 변수의 분산으로 나눔으로써 결정된 회귀 직선의 기울기에 대응하는 각도를, 90 도로부터 뺌으로써 회귀 직선의 기울기를 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
8. The method of claim 7,
The first axis is an X axis indicating a shorter direction in the direction in which the sensors of the touch panel are arranged,
The second axis represents a longitudinal direction in a direction in which the sensors of the touch panel are arranged, and is a Y axis orthogonal to the first axis,
The step of determining the slope of the regression line,
When the axis of the determined independent variable is the second axis, a program for determining the slope of the regression line by subtracting from 90 degrees an angle corresponding to the slope of the regression line determined by dividing the determined covariance by the variance of the determined independent variable A computer-readable storage medium storing the
제1항 또는 제2항에 있어서,
상기 제1 축은, 상기 터치 패널의 센서가 배열되는 방향의 짧은 쪽 방향을 나타내는 X 축이며, 상기 제2 축은, 상기 터치 패널의 센서가 배열되는 방향의 긴 쪽 방향을 나타내고, 상기 제1 축에 직교하는 Y 축인 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
3. The method of claim 1 or 2,
The first axis is an X-axis indicating a short direction in a direction in which the sensors of the touch panel are arranged, and the second axis is a long direction in a direction in which the sensors of the touch panel are arranged, and is connected to the first axis. A computer readable storage medium storing a program that is an orthogonal Y axis.
제1항 또는 제2항에 있어서,
상기 각도를 결정하는 단계는,
미리 정해진 처리 시간마다 각도를 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
3. The method of claim 1 or 2,
The step of determining the angle is
A computer readable storage medium storing a program for determining an angle at each predetermined processing time.
제10항에 기재된 프로그램을 포함하는, 상기 터치 패널을 구비하는 상기 전자 장치에서 실행되는 게임을 위한 한 조의 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체로서,
상기 미리 정해진 처리 시간은, 게임을 실행하기 위한 프레임 레이트에 대응하는 시간이며,
상기 미리 정해진 처리 시간마다 결정되는 각도에 기초하여, 상기 미리 정해진 처리 시간마다 각도 및 크기를 결정하는 단계와,
상기 미리 정해진 처리 시간마다 결정되는 각도 및 크기에 기초하여, 상기 터치 패널에 표시되는 상기 조작 대상 오브젝트를 제어하는 단계
를 실행시키는 한 조의 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
A computer-readable storage medium storing a set of programs for a game executed in the electronic device having the touch panel, comprising the program according to claim 10,
The predetermined processing time is a time corresponding to the frame rate for executing the game,
determining an angle and a size for each predetermined processing time based on the angle determined for each predetermined processing time;
controlling the manipulation target object displayed on the touch panel based on the angle and size determined for each predetermined processing time;
A computer-readable storage medium storing a set of programs for executing
제10항에 기재된 프로그램을 포함하는, 상기 터치 패널을 구비하는 상기 전자 장치에서 실행되는 게임을 위한 한 조의 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체로서,
상기 미리 정해진 처리 시간은, 게임을 실행하기 위한 프레임 레이트에 대응하는 시간이며,
상기 미리 정해진 처리 시간마다 결정되는 각도에 기초하여, 상기 미리 정해진 처리 시간마다 각도 및 크기를 결정하는 단계와,
상기 미리 정해진 처리 시간마다 결정되는 각도 및 크기에 기초하여, 상기 터치 패널에 표시되는 게임 화상을 촬영하기 위한 상기 조작 대상 오브젝트인 가상 카메라를 제어하는 단계
를 실행시키는 한 조의 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.
A computer-readable storage medium storing a set of programs for a game executed in the electronic device having the touch panel, comprising the program according to claim 10,
The predetermined processing time is a time corresponding to the frame rate for executing the game,
determining an angle and a size for each predetermined processing time based on the angle determined for each predetermined processing time;
controlling the virtual camera, which is the manipulation target object, for capturing a game image displayed on the touch panel based on the angle and size determined for each predetermined processing time;
A computer-readable storage medium storing a set of programs for executing
터치 패널을 구비하는 전자 장치로서,
상기 터치 패널로의 유저의 조작에 의하여 발생한 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하고,
상기 보지되어 있는 데이터 포인트 중 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료하고,
상기 보지되어 있는 데이터 포인트에 기초하여 회귀 직선의 기울기를 결정하고,
상기 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여 상기 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정하고,
상기 결정된 회귀 직선의 기울기 및 상기 결정된 회전량에 기초하여, 상기 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하는
전자 장치.
An electronic device having a touch panel, comprising:
hold data points indicated by the values of the first axis and the values of the second axis obtained based on a touch event generated by the user's operation on the touch panel;
End of holding of data points that have exceeded a predetermined holding time among the held data points;
determining the slope of the regression line based on the held data points;
determining an amount of rotation for rotating the determined slope of the regression straight line based on the displacement direction as the set of held data points;
Based on the determined inclination of the regression straight line and the determined rotation amount, the user determines an angle for controlling the manipulation target object in the virtual space
electronic device.
터치 패널을 구비하는 전자 장치에서 실행되는 방법으로서,
상기 터치 패널로의 유저의 조작에 의하여 발생한 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하는 단계와,
상기 보지되어 있는 데이터 포인트 중 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료하는 단계와,
상기 보지되어 있는 데이터 포인트에 기초하여 회귀 직선의 기울기를 결정하는 단계와,
상기 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여 상기 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정하는 단계와,
상기 결정된 회귀 직선의 기울기 및 상기 결정된 회전량에 기초하여, 상기 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하는 단계
를 가지는 방법.
A method executed in an electronic device having a touch panel, comprising:
holding data points indicated by values of a first axis and a value of a second axis obtained based on a touch event generated by a user's manipulation of the touch panel;
terminating holding of data points that have exceeded a predetermined holding time among the held data points;
determining the slope of the regression line based on the held data points;
determining a rotation amount for rotating the determined slope of the regression straight line based on the displacement direction as the set of held data points;
Determining an angle for the user to control the manipulation target object in the virtual space based on the determined inclination of the regression straight line and the determined rotation amount
how to have
KR1020207031560A 2018-05-16 2019-04-22 Programs, electronic devices, and methods KR102362465B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018094656A JP6389581B1 (en) 2018-05-16 2018-05-16 Program, electronic apparatus, and method
JPJP-P-2018-094656 2018-05-16
PCT/JP2019/016971 WO2019220873A1 (en) 2018-05-16 2019-04-22 Program, electronic device, and method

Publications (2)

Publication Number Publication Date
KR20200138811A KR20200138811A (en) 2020-12-10
KR102362465B1 true KR102362465B1 (en) 2022-02-14

Family

ID=63518833

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207031560A KR102362465B1 (en) 2018-05-16 2019-04-22 Programs, electronic devices, and methods

Country Status (5)

Country Link
US (1) US11541311B2 (en)
JP (1) JP6389581B1 (en)
KR (1) KR102362465B1 (en)
CN (1) CN112424739A (en)
WO (1) WO2019220873A1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7250451B2 (en) * 2018-07-13 2023-04-03 株式会社Cygames Programs, electronic devices, and methods
JP2021067990A (en) * 2019-10-18 2021-04-30 株式会社Cygames Processing apparatus, processing method, and program
JP6748281B1 (en) * 2019-12-10 2020-08-26 株式会社Cygames Server, processing system, processing method and program
JP7143364B2 (en) * 2020-05-15 2022-09-28 株式会社Cygames Method, program and electronic device
US11577157B2 (en) * 2020-07-08 2023-02-14 Nintendo Co., Ltd. Systems and method of controlling game operations based on touch input
JP6862597B1 (en) * 2020-07-14 2021-04-21 株式会社Cygames Methods, programs, and electronics
TWI801867B (en) * 2021-05-12 2023-05-11 虹堡科技股份有限公司 Password input device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012198855A (en) 2011-03-23 2012-10-18 Sony Corp Information processor, information processing method, and program
JP2018067068A (en) 2016-10-17 2018-04-26 グリー株式会社 Drawing processing method, drawing processing program and drawing processing device

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3734820A (en) 1971-09-22 1973-05-22 Calgon Corp Cationic dextran graft copolymers as dry strength additives for paper
JP3734820B1 (en) * 2004-09-03 2006-01-11 任天堂株式会社 GAME PROGRAM, GAME DEVICE, AND INPUT DEVICE
JP4578947B2 (en) * 2004-11-19 2010-11-10 任天堂株式会社 GAME PROGRAM AND GAME DEVICE
JP4583893B2 (en) * 2004-11-19 2010-11-17 任天堂株式会社 GAME PROGRAM AND GAME DEVICE
JP5031261B2 (en) * 2006-05-09 2012-09-19 任天堂株式会社 GAME PROGRAM AND GAME DEVICE
CN101498985B (en) * 2008-01-30 2012-05-30 义隆电子股份有限公司 Touch control panel for multi-object operation and its use method
JP4932010B2 (en) * 2010-01-06 2012-05-16 株式会社スクウェア・エニックス User interface processing device, user interface processing method, and user interface processing program
JP5237325B2 (en) * 2010-04-28 2013-07-17 株式会社スクウェア・エニックス Video game processing apparatus, video game processing method, and video game processing program
JP6184658B2 (en) * 2010-08-20 2017-08-23 任天堂株式会社 GAME SYSTEM, GAME DEVICE, GAME PROGRAM, AND GAME PROCESSING METHOD
EP2497547B1 (en) * 2011-03-08 2018-06-27 Nintendo Co., Ltd. Information processing program, information processing apparatus, information processing system, and information processing method
JP5689014B2 (en) * 2011-04-07 2015-03-25 任天堂株式会社 Input system, information processing apparatus, information processing program, and three-dimensional position calculation method
JP5594847B2 (en) * 2011-05-19 2014-09-24 株式会社ソニー・コンピュータエンタテインメント Information processing apparatus, information processing apparatus control method, program, and information storage medium
US20130300704A1 (en) * 2011-09-13 2013-11-14 Tomonari Takahashi Information input device and information input method
JP2013127683A (en) * 2011-12-16 2013-06-27 Namco Bandai Games Inc Program, information storage medium, terminal, server, and network system
JP2014154055A (en) * 2013-02-13 2014-08-25 Mitsubishi Electric Corp Image processor and image processing method
KR20140105354A (en) * 2013-02-22 2014-09-01 삼성전자주식회사 Electronic device including a touch-sensitive user interface
US9772743B1 (en) * 2015-03-30 2017-09-26 Electronic Arts Inc. Implementation of a movable control pad on a touch enabled device
CN107890665A (en) * 2017-11-20 2018-04-10 上海祐胜电子科技有限公司 A kind of new game control device
JP6560801B1 (en) * 2018-09-26 2019-08-14 株式会社Cygames Program, electronic apparatus, and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012198855A (en) 2011-03-23 2012-10-18 Sony Corp Information processor, information processing method, and program
JP2018067068A (en) 2016-10-17 2018-04-26 グリー株式会社 Drawing processing method, drawing processing program and drawing processing device

Also Published As

Publication number Publication date
US20210052984A1 (en) 2021-02-25
JP6389581B1 (en) 2018-09-12
CN112424739A (en) 2021-02-26
JP2019200595A (en) 2019-11-21
WO2019220873A1 (en) 2019-11-21
KR20200138811A (en) 2020-12-10
US11541311B2 (en) 2023-01-03

Similar Documents

Publication Publication Date Title
KR102362465B1 (en) Programs, electronic devices, and methods
US9342160B2 (en) Ergonomic physical interaction zone cursor mapping
US10331222B2 (en) Gesture recognition techniques
CN108885533A (en) Combine virtual reality and augmented reality
CN113168281B (en) Computer readable medium, electronic device and method
JP2018506767A (en) Virtual wearable
CN106029187A (en) Advanced game mechanics on hover-sensitive devices
KR20150116897A (en) Detecting natural user-input engagement
US20150153834A1 (en) Motion input apparatus and motion input method
US9350918B1 (en) Gesture control for managing an image view display
JP7250451B2 (en) Programs, electronic devices, and methods
TWI690730B (en) Head mounted display system capable of displaying a virtual scene and a real scene in a picture-in-picture mode, related method and related computer readable storage medium
US11054941B2 (en) Information processing system, information processing method, and program for correcting operation direction and operation amount
JP7471782B2 (en) Program, electronic device, and method
CN113590014B (en) Elevator calling method and device based on gesture action and computer equipment
JP6911216B1 (en) Methods, programs, and electronics
US20230117127A1 (en) Method, program, and electronic device
JP6523509B1 (en) Game program, method, and information processing apparatus
Chu et al. A study of motion recognition system using a smart phone
CN115068936A (en) Animation playing method and device, computer equipment and storage medium

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant