KR102362465B1 - Programs, electronic devices, and methods - Google Patents
Programs, electronic devices, and methods Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction 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/0488—Interaction 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/04883—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction 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/04815—Interaction 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
- A63F13/21—Input arrangements for video game devices characterised by their sensors, purposes or types
- A63F13/214—Input 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/2145—Input 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
- A63F13/21—Input arrangements for video game devices characterised by their sensors, purposes or types
- A63F13/218—Input 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/40—Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
- A63F13/42—Processing 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/426—Processing 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
- A63F13/525—Changing parameters of virtual cameras
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
- A63F13/525—Changing parameters of virtual cameras
- A63F13/5255—Changing 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/573—Simulating 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/90—Constructional 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/92—Video game devices specially adapted to be hand-held while playing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/044—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by capacitive means
- G06F3/0446—Digitisers, 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction 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/0488—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/048—Indexing scheme relating to G06F3/048
- G06F2203/04808—Several 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
본 발명은, 프로그램 등에 관한 것이며, 특히, 터치 패널을 구비하는 전자 장치에서 실행되는 프로그램 등에 관한 것이다.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
예를 들면, 특허 문헌 1에는, 터치 패널을 구비하는 게임 장치이며, 유저의 터치 조작에 따라 원점을 설정하여 조이스틱을 본뜬 조작을 행할 수 있는 게임 장치 또는 프로그램이 개시되어 있다. 해당 게임 장치는, 터치 패널이 터치를 검출하고 있지 않은 상태에서 검출한 상태로 변화된 경우에 검출을 개시했을 때의 좌표에 기초하여 기준 좌표를 설정하고, 그 후, 터치 검출을 계속하는 경우, 그 후에 검출한 좌표에 기초하여 지시 좌표를 설정한다. 그리고 해당 게임 장치는, 기준 좌표로부터 지시 좌표로의 벡터의 방향이 조이스틱을 넘어뜨리고 있는 방향, 벡터의 크기가 조이스틱이 넘어뜨려진 상태라고 인식함으로써, 가상 조이스틱을 실현하고, 가상 오브젝트의 조작을 실현하고 있다.For example,
특허 문헌 1에 도시하는 종래 기술에 있어서, 유저는, 터치 패널 상의 한 개소를 손가락으로 접촉하여 게임 장치에 기준 좌표를 인식시키고, 접촉한 채로 그 손가락을 슬라이드시켜, 슬라이드 후의 손가락의 접촉 위치에 의하여 게임 장치에 지시 좌표를 인식시킨다. 이와 같이 구성되는 종래 기술은, 유저가 방향을 입력할 때, 기준 좌표로부터 지시 좌표까지 유의한 거리를 생성할 필요가 있으므로, 높은 응답성을 실현하는 것은 어려웠다. 예를 들면, 유저가 가상 조이스틱을 크게 넘어뜨린 조작을 행하고자 하는 경우, 크게 넘어뜨린 조이스틱이 넘어뜨려진 상태에 대응하는 기준 좌표로부터 지시 좌표로의 벡터의 크기를 생성할 필요가 있었다.In the prior art shown in
따라서, 터치 패널에 표시된, 가상 공간 상에 배치된 가상 오브젝트를 제어하는 조작 방법으로서, 예를 들면, 보다 고속으로 직감적인 조작 방법의 실현이 요구되고 있다. 더 일반화하면, 가상 공간 내에 배치되고, 유저의 조작 대상이 될 수 있는 오브젝트인 조작 대상 오브젝트를 제어하는 조작 방법으로서, 보다 조작성이 높은 조작 방법의 실현이 요구되고 있다.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
설명의 편의 상, 본 실시 형태에서는, 전자 장치(10)에는 상기와 같은 게임 어플리케이션이 인스톨되어 있는 것으로 하지만, 이에 한정되지 않는다. 전자 장치(10)는, 유저의 조작에 따라, 조작 대상 오브젝트를 제어하는 것이 가능한 어플리케이션을 실장하고 있으면 된다. 예를 들면, 전자 장치(10)에는, 게임 어플리케이션 대신에, 또는 이에 추가하여, 유저의 조작에 따라 조작 대상 오브젝트를 동작시키는 입력 지원 어플리케이션, 또는 시뮬레이션 어플리케이션이 실장되어도 된다. 본 실시 형태의 전자 장치(10)가 제공하는 가상 콘트롤러는, 유저의 입력으로서 방향과 크기가 필요한 입력에 이용할 수 있다. 이하의 설명에서, 어플리케이션은, 어플리케이션 프로그램 전반을 의미하는 것이며, 스마트폰이나 태블릿 단말에 인스톨되는 앱을 의미할 수 있다.For convenience of explanation, in the present embodiment, it is assumed that the above game application is installed in the
도 1은, 본 발명의 일 실시 형태에 의한 전자 장치(10)의 하드웨어 구성을 도시하는 블록도이다. 전자 장치(10)는, 프로세서(11), 입력 장치(12), 표시 장치(13), 기억 장치(14), 및 통신 장치(15)를 구비한다. 이러한 각 구성 장치는 버스(16)에 의하여 접속된다. 또한, 버스(16)와 각 구성 장치의 사이에는, 필요에 따라 인터페이스가 개재되어 있는 것으로 한다. 본 실시 형태에서, 전자 장치(10)는 스마트폰이다. 단, 전자 장치(10)는, 상기의 구성을 구비하는 것이라면, 태블릿형 컴퓨터, 터치 패드 등의 접촉형 입력 장치를 구비하는 컴퓨터 등의 단말로 할 수 있다.1 is a block diagram showing a hardware configuration of an
프로세서(11)는, 전자 장치(10) 전체의 동작을 제어한다. 예를 들면, 프로세서(11)는, CPU이다. 또한, 프로세서(11)로서는, MPU 등의 전자 회로가 이용되어도 된다. 프로세서(11)는, 기억 장치(14)에 저장되어 있는 프로그램 또는 데이터를 읽어들여 실행함으로써, 다양한 처리를 실행한다. 하나의 예에서는, 프로세서(11)는 복수의 프로세서로 구성된다.The
입력 장치(12)는, 전자 장치(10)에 대한 유저로부터의 입력을 받아들이는 유저 인터페이스이며, 예를 들면, 터치 패널, 터치 패드, 키보드, 또는 마우스이다. 표시 장치(디스플레이)(13)는, 프로세서(11)의 제어에 따라, 어플리케이션 화면 등을 전자 장치(10)의 유저에게 표시한다. 본 실시 형태에서는, 스마트폰인 전자 장치(10)는 입력 장치(12)로서 터치 패널(17)을 구비하고, 터치 패널(17)은 표시 장치(13)로서도 기능하며, 입력 장치(12)와 표시 장치(13)는 일체가 된 구조이다. 본 실시 형태의 터치 패널(17)은, 투영형 정전 용량 방식 터치 패널이지만, 동등한 기능을 가지는 디바이스가 있다면, 그것을 이용하여도 된다.The
기억 장치(14)는, 휘발성 메모리인 RAM 및 불휘발성 메모리인 ROM을 포함하는, 일반적인 스마트폰이 구비하는 기억 장치이다. 기억 장치(14)는, 외부 메모리를 포함할 수도 있다. 기억 장치(14)는, 게임 어플리케이션을 포함하는 각종 프로그램을 기억한다. 예를 들면, 기억 장치(14)는, 오퍼레이팅 시스템(OS), 미들웨어, 어플리케이션 프로그램, 이들 프로그램의 실행에 수반하여 참조될 수 있는 각종 데이터 등을 저장한다.The
하나의 예에서는, 기억 장치(14)는, 주기억 장치 및 보조 기억 장치를 포함한다. 주기억 장치는, 정보의 고속의 읽고 쓰기가 가능한 휘발성의 기억 매체이며, 프로세서(11)가 정보를 처리할 때의 기억 영역 및 작업 영역으로서 이용된다. 보조 기억 장치는, 다양한 프로그램, 또는 각 프로그램의 실행 시에 프로세서(11)가 사용하는 데이터를 저장한다. 보조 기억 장치는, 예를 들면, 하드 디스크 장치이지만, 정보를 저장할 수 있는 것이라면, 어떠한 불휘발성 스토리지 또는 불휘발성 메모리여도 되며, 착탈 가능한 것이여도 상관없다.In one example, the
통신 장치(15)는, 네트워크를 통하여 서버 등의 다른 컴퓨터와의 사이에서 데이터의 송수신을 행한다. 예를 들면, 통신 장치(15)는, 이동 통신이나 무선 LAN 등의 무선통신을 행하여, 네트워크에 접속한다. 하나의 예에서는, 전자 장치(10)는, 통신 장치(15)에 의하여 프로그램을 서버로부터 다운로드하여 기억 장치(14)에 저장한다. 단, 통신 장치(15)는 기존의 유선 통신을 행해도 된다. 다른 컴퓨터와의 사이에서 데이터의 송수신을 행하지 않는 경우, 전자 장치(10)는 통신 장치(15)를 구비하지 않아도 된다.The
도 2는, 본 발명의 일 실시 형태에 의한 전자 장치(10)의 기능 블록도이다. 전자 장치(10)는, 입력부(21), 표시부(22), 및 제어부(23)를 구비한다. 제어부(23)는, 각도 결정부(24), 상태 결정부(25), 및 어플리케이션부(26)를 구비한다. 본 실시 형태에서는, 프로그램이 프로세서(11)에 의하여 실행됨으로써, 이들 기능이 실현된다. 예를 들면, 실행되는 프로그램은, 기억 장치(14)에 기억되어 있는, 또는 통신 장치(15)를 통하여 수신한 프로그램이다. 이와 같이, 각종 기능이 프로그램 읽어들임에 의하여 실현되므로, 한 개의 파트(기능)의 일부 또는 전부를 다른 파트가 가지고 있어도 된다. 단, 각 기능의 일부 또는 전부를 실현하기 위한 전자 회로 등을 구성함으로써, 하드웨어에 의해서도 이들 기능은 실현되어도 된다.2 is a functional block diagram of an
입력부(21)는, 입력 장치(12)를 이용하여 구성되는 것이며, 전자 장치(10)에 대한 유저로부터의 입력을 받아들인다. 본 실시 형태에서는, 입력부(21)는, 터치 패널(17)로의 유저의 터치 조작을 받아들여 터치 이벤트를 발생하는 것이며, 터치 패널(17)을 구비하는 스마트폰이 일반적으로 가지고 있는 터치 검출 기능을 이용할 수 있다.The
표시부(22)는, 게임 어플리케이션 화면을 표시 장치(13)에 표시하고, 유저 조작에 따른 화면을 표시한다.The
제어부(23)는, 가상 콘트롤러를 실현하는 것이다. 본 실시 형태에서는, 제어부(23)는 3 층 구조의 아키텍쳐를 채용하고, 각도 결정부(24), 상태 결정부(25), 및 어플리케이션부(26)가 각 층에 대응한다. 예를 들면, 제어부(23)는, 각 층에 대응하는 각 프로그램에 의하여 구성되는 한 조의 프로그램이 프로세서(11)에 의하여 실행됨으로써 실현된다.The
제어부(23)가 실현하는 가상 콘트롤러에 있어서의 각도 결정부(24)의 역할은, 물리적인 콘트롤러에 있어서의 콘트롤러 내부의 센서 IC 칩에 대응한다. 각도 결정부(24)는, 주로, 터치 패널(17)로의 유저의 터치 조작에 의하여 발생한 터치 이벤트를 이용하여, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도를 결정하고, 상태 결정부(25)로 송출한다.The role of the
상태 결정부(25)의 역할은, 물리적인 콘트롤러에 있어서의 조작하는 콘트롤러 전체에 대응한다. 상태 결정부(25)는, 주로, 각도 결정부(24)로부터 송출된 각도를 이용하여, 터치 패널(17) 상의 유저의 터치 조작에 대응하는 벡터(각도 및 크기)를 결정하고, 어플리케이션부(26)로 송출한다.The role of the
어플리케이션부(26)는, 게임 내의 동작 등을 실장하는, 구체적인 게임 어플리케이션에 대응한다. 게임 어플리케이션은, 일반적인 게임 어플리케이션과 마찬가지로 하여, 프레임 레이트가 정해지고, 예를 들면, 프레임 레이트에 대응하는 시간마다, 메인 프로그램의 메인 루프를 처리한다. 프레임 레이트는, 일반적으로 30fps(프레임 매초) 또는 60fps이다.The
각도 결정부(24)는, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위하여 필요한 각도를 결정한다. 하나의 바람직한 예에서는, 각도 결정부(24)는, 리얼타임으로 각도를 계산하는 수학 함수 라이브러리이며, 한편 단시간의 터치 이벤트의 열로부터의 각도 계산을 행하는, 통계 처리 알고리즘을 실장하는 소프트웨어 모듈이다. 터치 이벤트의 열은, 터치 패널(17) 상의 손가락의 움직임에 대응하는 것이다.The
기억 장치(14)는, 데이터 포인트 버퍼를 포함한다. 데이터 포인트 버퍼는, 각도 결정부(24)가 터치 이벤트에 기초하여 취득되는 제1 축의 값 및 제2 축의 값에 의하여 표시되는 데이터 포인트를 보지하기 위한 버퍼이다.The
각도 결정부(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
본 실시 형태에서는, 설명의 편의 상, 제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
도 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
각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트 중, 미리 정해진 보지 시간을 초과한 데이터 포인트의 보지를 종료한다. 예를 들면, 각도 결정부(24)는, 데이터 포인트의 데이터의 보지를 종료하는 경우, 해당 데이터를 삭제해도 되고, 해당 데이터를 무효화해도 되며, 또는 해당 데이터에 보지를 종료한 것을 도시하는 플래그를 관련지어 적절히 삭제하도록 해도 된다. 각도 결정부(24)는, 데이터 포인트 버퍼에 저장하는 데이터 포인트의 수명을 밀리 세컨드로 지정하는 변수(D)를 정한다. 변수(D)에 의하여 지정되는 시간이 미리 정해진 보지 시간에 대응한다. 단, 변수(D)의 값은 밀리 세컨드로 한정되지 않는다.The
예를 들면, 각도 결정부(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
예를 들면, 변수(D)에 165가 설정되었을 때, 각도 결정부(24)는, 데이터 포인트 버퍼에 저장한 데이터 포인트를 165 밀리 세컨드만큼 보지하고, 165 밀리 세컨드가 경과하면, 해당 데이터 포인트를 데이터 포인트 버퍼의 보지를 종료한다.For example, when 165 is set in the variable D, the
각도 결정부(24)는, 정기적으로 각도를 산출할 수 있는지의 여부를 판정한다. 각도 결정부(24)는, 각도를 산출 가능한 경우, 데이터 포인트 버퍼가 보지하는 데이터 포인트를 이용하여, 해당 데이터 포인트의 집합이 나타내는 각도를 산출하고, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도로서 결정한다. 이와 같이, 각도 결정부(24)는, 데이터 포인트의 집합이 나타내는 각도를 구함으로써, 터치 패널(17)에 대하여 터치 조작을 행한 유저가 의도하는 방향의 각도를 구하는 것이 가능해진다.The
각도 결정부(24)는, 결정한 각도를 상태 결정부(25)로 출력한다. 각도 결정부(24)는, 결정한 각도를 상태 결정부(25)로 출력할 때, 예를 들면, angle 이벤트를 나타내는 정보와 함께 출력한다. 각도 결정부(24)는, 상태 결정부(25)로 직접 출력하지 않고, 상태 결정부(25)가 참조하는 기억 장치(14) 내의 메모리 영역에 결정한 각도 또는 angle 이벤트를 나타내는 정보를 저장해도 된다.The
각도 결정부(24)는, 취득한 터치 이벤트가 touchstart인 때, start 이벤트를 상태 결정부(25)로 출력하고, 각도를 산출하지 않는다. 각도 결정부(24)는, 취득한 터치 이벤트가 touchend인 때, stop 이벤트를 상태 결정부(25)로 출력하고, 각도를 산출하지 않는다.The
각도 결정부(24)는, 변수(B)를 정하고, 데이터 포인트 버퍼가 보지하는 데이터 포인트의 개수가 변수(B)의 수 이상인 경우, 해당 데이터 포인트를 이용하여 각도를 산출하고 결정한다. 각도 결정부(24)는, 데이터 포인트 버퍼가 보지하는 데이터 포인트의 개수가 변수(B)의 수 미만인 경우, 데이터 포인트의 집합이 나타내는 각도를 일정 정밀도 이상으로 산출하는 것이 불가능하므로, keep 이벤트를 상태 결정부(25)로 출력하고, 각도를 산출하지 않는다. 일반적으로는, 회귀 직선의 기울기를 구함에 있어서는 3 개 이상의 데이터 포인트가 있는 것이 바람직하므로, 변수(B)는 3 이상으로 설정되는 것이 바람직하다. 본 실시 형태에서는, 변수(B)는 3으로 설정된다.The
각도 결정부(24)는, 각도 결정부(24)가 각도를 산출할 수 있는지의 여부를 판정하는 시간의 간격을 밀리 세컨드로 지정하는 변수(I)를 정한다. 터치 이벤트가 계속 발생하는 경우 등, 각도 결정부(24)가 각도를 산출 가능한 경우가 계속하는 경우, 해당 간격은, 각도 결정부(24)가 각도를 산출하는 시간의 간격이 된다. 단, 변수(I)의 값은 밀리 세컨드로 한정되지 않는다.The
각도 결정부(24)는, 상기와 같이 미리 정해진 처리 시간마다 각도 산출 가부에 대하여 판정하고, 미리 정해진 처리 시간마다 각도를 결정한다. 하나의 바람직한 예에서는, 미리 정해진 처리 시간은, 게임을 실행하기 위한 프레임 레이트에 대응하는 시간이다. 프레임 레이트가 30fps(30Hz)인 경우, 변수(I)는 33으로 설정된다. 변수(I)에 33이 설정되었을 때, 각도 결정부(24)는, 33 밀리 세컨드에 1 회 각도를 산출할 수 있을지 판정하고, 각도를 산출 가능한 경우에는 산출한 각도를 결정하고, 결정한 각도를 angle 이벤트와 함께 상태 결정부(25)로 출력한다. 산출 불가능한 경우, 각도 결정부(24)는, start 이벤트, stop 이벤트, 또는 keep 이벤트 중 어느 한 개를 상태 결정부(25)로 출력한다. 또한, angle 이벤트는 각도를 나타내는 정보를 포함할 수 있고, 이 경우, 각도 결정부(24)는, 각도를 산출 가능한 경우, angle 이벤트를 상태 결정부(25)로 출력한다.The
데이터 포인트 버퍼가 보지하는 데이터 포인트의 집합이 나타내는 각도를 산출함에 있어서, 각도 결정부(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
본 실시 형태에서는, 각도 결정부(24)는, 최소 이승법을 이용하여 회귀 직선의 기울기를 산출한다. 최소 이승법을 이용하여 회귀 직선의 기울기를 구하는 방법은 이미 알려져 있으나, 해당 방법은 독립 변수와 종속 변수의 관계의 강도를 기울기로서 구하는 것이다. 최소 이승법은, x 축을 독립 변수의 축으로 하고, y 축을 종속 변수의 축으로서 적용하는 것이 일반적이지만, x 축의 값이 고정되어 y 축의 값만이 변화하는 경우, 종속 변수가 독립 변수에 일절의 종속성을 가지지 않게 된다. 또한, y 축에 따른 기울기를 결정하는 경우, 결정되는 기울기는, 예를 들면, y 축을 넘어 큰 마이너스의 값으로부터 큰 플러스의 값이 되는 경우가 있어, 안정되게 기울기를 내는 것이 어렵다. 그 때문에, 각도 결정부(24)는, x 축의 값과 y 축의 값 중 어느 쪽이 독립 변수로서 적절한지를 판정하고, 결정된 독립 변수의 축 및 종속 변수의 축에 기초하여 최소 이승법을 이용하여 회귀 직선의 기울기를 결정한다.In the present embodiment, the
각도 결정부(24)는, 독립 변수의 축을 x 축으로 할 때, y=ax+b의 회귀 직선의 기울기 a를 결정하고, 독립 변수의 축을 y 축으로 할 때, x=cy+d의 회귀 직선의 기울기 c를 결정한다. 구체적으로는, 각도 결정부(24)는, 이하의 (a) 내지 (e)에 의하여 회귀 직선의 기울기를 구한다.The
(a) 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 평균 및 종속 변수의 평균을 산출(결정)한다.(a) The
(b) 각도 결정부(24)는, (a)에서 결정된 평균을 이용하여, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 편차 및 종속 변수의 편차를 산출(결정)한다.(b) The
(c) 각도 결정부(24)는, (b)에서 결정된 독립 변수의 편차를 이용하여, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 독립 변수의 분산을 산출(결정)한다.(c) The
(d) 각도 결정부(24)는, (b)에서 결정된 독립 변수의 편차 및 종속 변수의 편차를 이용하여, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 공분산을 산출(결정)한다.(d) The
(e) 각도 결정부(24)는, (d)에서 결정된 공분산을 (c)에서 결정된 독립 변수의 분산으로 나눔으로써 회귀 직선의 기울기를 산출(결정)한다.(e) The
하나의 예에서는, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 x 축의 값의 최대값과 최소값의 차분값 및 y 축의 값의 최대값과 최소값의 차분값에 기초하여, 독립 변수의 축으로서 x 축 및 y 축 중 어느 한 쪽의 축을 결정하고, 다른 한 쪽의 축을 종속 변수의 축으로서 결정한다. 바람직하게는, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 x 축의 값의 최대값과 최소값의 차분값에 대하여 가중 계수를 이용하여 가중치 부여를 행한 값 및 y 축의 값의 최대값과 최소값의 차분값에 기초하여, 독립 변수의 축으로서 x 축 및 y 축 중 어느 한 쪽의 축을 결정하고, 다른 한 쪽의 축을 종속 변수의 축으로서 결정한다.In one example, the
각도 결정부(24)는, 상기와 같이 최소 이승법을 이용하여 회귀 직선의 기울기를 산출(결정)한다. 바람직하게는, 각도 결정부(24)가 회귀 직선의 기울기를 산출하는 것은, 각도 결정부(24)가 회귀 직선의 기울기의 각도를 산출하는 것을 의미한다. 여기서, 산출되는 회귀 직선의 기울기는 음양의 방향을 가지지 않으므로, 각도 결정부(24)는, 최소 이승법을 이용하여 회귀 직선의 기울기를 산출할 때, 예를 들면, 0 도 내지 90 도 및 270 도 내지 360 도의 범위 내에서 산출한다. 따라서, 예를 들면, 데이터 포인트의 집합이 나타내는 각도가, 45 도의 경우 또는 225 도의 경우에도, 회귀 직선의 기울기로서 45 도가 산출된다. 그 때문에, 각도 결정부(24)는, 회귀 직선의 기울기를 결정한 후, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여, 결정된 회귀 직선의 기울기를 회전시키는 회전량을 결정한다. 구체적으로는, 각도 결정부(24)는, 회귀 직선의 기울기를 결정한 후, 유저가 조작 대상 오브젝트를 제어하기 위한 각도를 결정함에 있어서, 결정된 회귀 직선의 기울기(의 각도)에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다. 여기서, 데이터 포인트의 집합으로서의 변위 방향은, 데이터 포인트가 시간과 함께 변위하는 방향을 나타내는 것이며, 예를 들면, 유저가 터치 패널(17) 상에서 손가락을 움직이는 대략적인 방향에 대응하는 것이다.The
하나의 예에서는, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에서 시계열적으로 전후하는 데이터 포인트의 변위 방향에 기초하여 회전량을 결정한다. 바람직하게는, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에서의 시계열적으로 전후하는, 결정된 독립 변수의 축의 값의 차분값의 음양의 수량을 비교함으로써 회전량을 결정한다. 결정되는 회전량은, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량이다.In one example, the
각도 결정부(24)는, 데이터 포인트 버퍼가 먼저 저장된 데이터 포인트로부터 차례대로 데이터 포인트를 보지하도록, 각 데이터 포인트를 저장한다. 혹은, 각도 결정부(24)는, 데이터 포인트 버퍼에 데이터 포인트를 저장할 때, 저장된 차례가 식별 가능한 식별 정보를 관련지어 저장한다. 이와 같이, 각도 결정부(24)는, 저장된 차례를 식별할 수 있도록, 즉, 저장된 데이터 포인트의 시계열 순서를 식별할 수 있도록, 데이터 포인트 버퍼에 데이터 포인트를 보지하고 있다. 이 때, 각도 결정부(24)는, 데이터 포인트 취득 시간(t)의 값을 이용할 수 있다.The
각도 결정부(24)는, 결정된 회귀 직선의 기울기 및 결정된 회전량에 기초하여, 데이터 포인트의 집합이 나타내는 각도를 산출하고, 유저가 가상 공간 내의 조작 대상 오브젝트를 제어하기 위한 각도로서 결정한다.The
본 실시 형태에서는, 상기의 각도 결정부(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
(1) (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).
(2) (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
식 (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
함수(left(x))는, 식 (3)에 의하여 표시된다.The function (left(x)) is expressed by Equation (3).
(3) (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).
(4) (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).
(5) (5)
여기서,here,
는, x(독립 변수)의 평균이며,is the mean of x (independent variable),
는, y(종속 변수)의 평균이며,is the mean of y (the dependent variable),
는, x(독립 변수)와 y(종속 변수)의 공분산이며,is the covariance of x (independent variable) and y (dependent variable),
는, 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) .
(6) (6)
여기서,here,
는, x(종속 변수)의 평균이며,is the mean of x (the dependent variable),
는, y(독립 변수)의 평균이며,is the mean of y (independent variable),
는, x(종속 변수)와 y(독립 변수)의 공분산이며,is the covariance of x (dependent variable) and y (independent variable),
는, 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
함수(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
상태 결정부(25)는, 미리 정해진 처리 시간마다 각도 결정부(24)가 출력하는 정보를 수취하면, 수취한 이벤트에 따라, 미리 정해진 처리 시간마다 가상 콘트롤러의 기울기의 상태를 출력한다. 가상 콘트롤러는, 물리적인 아날로그 콘트롤러를 소프트웨어로 실현하는 것이지만, 가상 콘트롤러의 기울기란, 물리적인 콘트롤러의 조이스틱 또는 레버의 기울기에 대응하는 것이다. 상태 결정부(25)는, 가상 콘트롤러의 기울기의 상태를, 벡터, 즉, 방향(각도) 및 크기로서 출력한다. 크기는, 가속도 정보로 할 수도 있고, 속도 정보로 할 수도 있다. 가상 콘트롤러의 기울기의 상태는, 물리적인 아날로그 콘트롤러의 입력량에 대응하는 것이다.When the
이와 같이, 상태 결정부(25)는, 발생한 터치 이벤트의 의미를 해석하기 위한 상태 천이 모델을 제공하는 것이라고 생각할 수 있다. 상태 결정부(25)는, 가상의 콘트롤러의 기울기를 상태로서 관리하고, 미리 정해진 처리 시간마다 각도 결정부(24)가 출력하는 정보를 수취하면, 미리 정해진 처리 시간마다 상태 천이시키는 것이다.As described above, it can be considered that the
하나의 예에서는, 상태 결정부(25)는, 각도 결정부(24)로부터 출력되는 각도의 정보를 축적하고, 시간에 따라, 어플리케이션부(26)로의 출력을 산출한다. 예를 들면, 각도 결정부(24)가 165ms 계속하여 33ms마다 45 도를 출력하는 경우, 상태 결정부(25)는, 45 도의 방향으로 165ms분의 가속도 정보를 결정한다. 예를 들면, 각도 결정부(24)가 동일한 각도의 출력이 연속한 경우, 상태 결정부(25)는 해당 각도의 방향으로 가속하는 정보를 출력하고, 이어서 각도 결정부(24)가 해당 각도와 180 도 반대의 각도를 입력한 경우, 상태 결정부(25)는, 감속하는 정보를 출력한다. 이러한 구성으로 함으로써, 실제의 터치 좌표를 그대로 이용하지 않고, 콘트롤러의 입력량을, 상태 천이 회수에 대응하는 시간으로서 구하는 것이 가능해진다.In one example, the
하나의 예에서는, 상태 결정부(25)는, 각도 결정부(24)가 출력하는 정보를 수취하면, 수취한 이벤트에 따라, 가상 콘트롤러의 기울기의 상태를 설정하고, 게임 어플리케이션으로, 이동 이벤트 또는 가속 이벤트를 각도 및 크기를 나타내는 정보와 함께 출력한다. 구체적으로는, 상태 결정부(25)는, 소정의 프로그램 언어를 이용하여, 물리적인 아날로그 콘트롤러를 본뜬 가속도 처리를 실장할 수 있다.In one example, when the
하나의 바람직한 예에서는, 상태 결정부(25)는, 가상 콘트롤러의 기울기의 상태를 벡터로서 보지하고, 미리 정해진 처리 시간마다, 보지한 벡터를 출력한다. 상태 결정부(25)는, 각도 결정부(24)로부터 start 이벤트를 수취하면, 상태 관리를 개시한다. 상태 결정부(25)는, 최초로 각도 결정부(24)로부터 angle 이벤트를 수취하면, 수취한 각도 및 상태 천이 1 회분의 크기의 벡터의 보지를 개시하고, 해당 벡터를 출력한다. 상태 결정부(25)는, 추가로 각도 결정부(24)로부터 angle 이벤트를 수취하면, 내부에서 보지하는 벡터에, 수취한 각도 및 상태 천이 1 회분의 크기의 벡터를 가산하고, 해당 벡터를 보지함과 동시에 출력한다. 상태 결정부(25)는, 출력하는 벡터의 길이가 1.0을 초과한 경우, 1.0에 정규화한다.In one preferred example, the
예를 들면, 상태 결정부(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
상태 결정부(25)는, 각도 결정부(24)로부터 keep 이벤트를 수취하면, 내부에서 보지하는 벡터의 보지를 계속하고, 해당 벡터를 출력한다. 상태 결정부(25)는, 각도 결정부(24)로부터 stop 이벤트를 수취하면, 내부에서 보지하는 벡터의 보지를 해제하고, 제로 벡터를 출력하거나, 또는 stop 이벤트를 출력한다.When a keep event is received from the
이러한 구성으로 함으로써, 물리적인 아날로그 콘트롤러와 같은 조작을 스마트폰 상에서 실현하는 것이 가능해진다.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
각도 결정부(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
도 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
맨처음으로, 함수(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
도 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
도 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
도 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
도 18은, 본 발명의 일 실시 형태에 의한 전자 장치(10)가 데이터 포인트의 집합(120)으로부터 가상 캐릭터(121)를 제어하는 모습을 도시하는 도면이다. 도 18은, 터치 패널(17)로의 유저의 조작에 의하여 발생한 터치 이벤트에 대응하는 데이터 포인트를 가시화한 데이터 포인트의 집합(120)을 나타낸다. 전자 장치(10)는, 데이터 포인트의 집합(120)이 나타내는 각도(122)에 기초하여, 조작 대상 오브젝트인 가상 캐릭터(121)의 모션, 예를 들면, 걷기, 달리기, 방향 전환 등을 제어한다.18 is a diagram illustrating a state in which the
도 19는, 본 발명의 일 실시 형태에 의한 각도 결정부(24)의 정보 처리의 플로우차트를 도시하는 도면이다. 본 플로우차트는, 터치 이벤트가 발생하고, 각도 결정부(24)가 해당 터치 이벤트로부터 데이터 포인트를 취득한 때에 개시한다.19 : is a figure which shows the flowchart of the information processing of the
단계 101에서, 각도 결정부(24)는, 취득한 데이터 포인트를 데이터 포인트 버퍼에 저장한다. 이 때, 각도 결정부(24)는, 저장하는 데이터 포인트에, 저장 후의 경과 시간을 밀리 세컨드로 나타내는 T와, 데이터 포인트 버퍼에 저장할 수 있는 시간(보지 수명)을 밀리 세컨드로 나타내는 변수(D)를 관련짓는다.In step 101, the
이어서, 단계 102에서, 각도 결정부(24)는, start 이벤트를 상태 결정부(25)로 출력한다.Next, in step 102 , the
이어서, 단계 103에서, 각도 결정부(24)는, 터치 이벤트가 발생했는지의 여부를 판정한다. 단계 103은, 본 플로우차트 개시 시부터 Ims 후에 실행된다. 터치 이벤트가 발생한 경우, 본 플로우차트는 단계 104로 진행되고, 터치 이벤트가 발생하지 않은 경우, 본 플로우차트는 단계 106로 진행된다.Next, in step 103, the
단계 104에서, 각도 결정부(24)는, 발생한 터치 이벤트가 touchend인지의 여부를 판정한다. 취득한 터치 이벤트가 touchend였던 경우, 본 플로우차트는 종료한다. 취득한 터치 이벤트가 touchend가 아니었던 경우, 본 플로우차트는 단계 105로 진행된다.In step 104, the
단계 105에서, 각도 결정부(24)는, 발생한 터치 이벤트로부터 데이터 포인트를 취득하고, 데이터 포인트 버퍼에 저장한다. 이 때, 각도 결정부(24)는, 저장하는 데이터 포인트에, 저장 후의 경과 시간을 밀리 세컨드로 나타내는 T와, 데이터 포인트 버퍼에 저장할 수 있는 시간을 밀리 세컨드로 나타내는 변수(D)를 관련짓는다.In step 105, the
이어서, 단계 106에서, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트 중, 경과 시간(t)이 변수(D) 이상인 데이터 포인트의 보지를 종료한다. 각도 결정부(24)는, 데이터 포인트 버퍼에 저장하는 각 데이터 포인트에 대하여, 경과 시간(t)과 변수(D)를 비교하여, 경과 시간(t)이 변수(D) 이상인 경우, 해당 데이터 포인트의 보지를 종료한다.Next, in step 106, the
이어서, 단계 107에서, 각도 결정부(24)는, 데이터 포인트 버퍼가 보지하는 데이터 포인트의 개수(n)가 변수(B)의 수 이상인지의 여부를 판정한다. 개수(n)가 변수(B) 이상인 경우, 본 플로우차트는 단계 108로 진행되고, 개수(n)가 변수(B) 미만이었던 경우, 본 플로우차트는 단계 113로 진행된다.Next, in step 107, the
단계 108에서, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트에 있어서의 x 축의 값의 변위량 및 y 축의 값의 변위량에 기초하여, 독립 변수의 축으로서 x 축 및 y 축 중 어느 한 쪽의 축을 결정한다. 각도 결정부(24)는, 동시에 다른 한 쪽의 축을 종속 변수의 축으로서 결정한다.In step 108, the
이어서, 단계 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
이어서, 단계 110에서, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트의 집합으로서의 변위 방향에 기초하여, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정한다. 하나의 예에서는, 각도 결정부(24)는, 단계 108에서 x 축이 독립 변수의 축으로서 결정된 경우, 시계열적으로 전후하는 x 축의 값의 차분값을 각각 산출한다. 각도 결정부(24)는, 산출한 차분값이 마이너스가 되는 개수가 플러스가 되는 개수보다 많을 때, 회전량을 180 도로 결정하고, 적을 때, 회전량을 0 도로 결정한다. 하나의 예에서는, 각도 결정부(24)는, 단계 108에서 y 축이 독립 변수의 축으로서 결정된 경우, 시계열적으로 전후하는 y 축의 값의 차분값을 각각 산출한다. 각도 결정부(24)는, 산출한 차분값이 마이너스가 되는 개수가 플러스가 되는 개수보다 많을 때, 회전량을 180 도로 결정하고, 적을 때, 회전량을 0 도로 결정한다.Next, in step 110, the
이어서, 단계 111에서, 각도 결정부(24)는, 결정된 회귀 직선의 기울기 및 결정된 회전량에 기초하여 각도를 결정한다. 구체적으로는, 각도 결정부(24)는, 결정된 회귀 직선의 기울기에 대응하는 각도로 결정된 회전량을 가산함으로써 각도를 결정한다. 예를 들면, 회전량이 0 도인 경우, 각도 결정부(24)가 결정하는 각도는, 결정된 회귀 직선의 기울기에 대응하는 각도가 된다. 각도 결정부(24)는, angle 이벤트가 결정된 각도와 함께 상태 결정부(25)로 출력하고, 단계 112로 진행된다.Next, in step 111, the
단계 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
단계 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
본 플로우차트가 종료되면, 각도 결정부(24)는, 데이터 포인트 버퍼에 보지하는 데이터 포인트를 모두 삭제한다.When this flowchart ends, the
이어서, 본 발명의 실시 형태에 의한 전자 장치(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
또한, 본 실시 형태의 전자 장치(10)는, 스와이프 등의 유저의 조작이 복잡해도, 100ms 등의 매우 짧은 시간에서는, 등속 직선 운동으로서 모델화할 수 있으므로, 등속도 운동의 각도를 연속적으로 산출함으로써, 임의의 비선형 함수(≒인간의 조작)를 예측 및 근사시킬 수 있다고 하는 컨셉에 기초하여 설계된 것이다.In addition, since the
제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
제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
또한, 본 실시 형태에서는, 종래 기술에 있어서의 가상 콘트롤러, 즉, 기준 좌표와 현재의 지시 좌표와의 사이의 위치 관계에 의하여 얻어지는 벡터를 이용한 가상 콘트롤러와는 달리, 기준 좌표의 개념이 없으므로, 기준 좌표를 정하는 가상 콘트롤러보다 높은 응답성을 제공하는 것이 가능하다. 특히, 가상 캐릭터 등의 방향 전환 조작에 있어서는, 방향 전환 전과는 크게 다른 방향으로 유저가 터치 패널 상의 조작을 행했다고 해도, 현재의 지시 좌표가 기준 좌표에 가까워진다고 하는 개념 그 자체가 없으므로, 유저의 의도한 조작 내용에 재빠르게 응답하여 방향 전환할 수 있으므로 우위성이 현저하다. 또한, 상기와 같이 구성됨으로써, 스마트폰으로 조작하는 유저에 대하여 한 손으로의 조작을 가능케 할 수 있다. 이에 의하여, 유저가 종래 기술에 있어서의 가상 조이스틱의 조작을 행함에 있어서, 항상 기준 좌표를 의식할 필요가 있어, 한 손으로의 조작이 어려운 경우가 있다고 하는 문제점을 해소할 수 있다. 이와 같이, 본 실시 형태에서는, 보다 고속으로 직감적인 조작을 가능케 하는 가상 콘트롤러를 실현하고 있다.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
또한, 본 실시 형태의 전자 장치(10)가 제공하는 가상 콘트롤러의 기술은, 스와이프 조작으로부터의 각도의 인식을 수리적으로 모델화하고 있으므로, 360 도의 방향 이동, 가속 및 감속, 격투 게임과 같은 커멘드 입력 등의 폭넓은 장르에 적용 가능하다.In addition, since the technology of the virtual controller provided by the
상기의 작용 효과는, 특별히 언급이 없는 한, 다른 실시 형태 또는 다른 실시예에서도 마찬가지이다.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
도 20은, 본 발명의 일 실시 형태에 의한 전자 장치(10)가 표시하는 화상을 촬영하는 가상 공간 내에 배치된 가상 카메라(131)를 나타내는 도면이다. 도 20은, 가상 카메라(131)의 위치와, 가상 카메라(131)의 시선 방향(132)을 나타낸다. 시선 방향(132)은 가상 카메라(131)의 위치를 시점으로 하는 3 차원 벡터로 정해진다. 가상 카메라(131)로부터 시선 방향(132)으로 일정한 시야각에서 시야 영역이 정해지고, 해당 시야 영역에 시선 방향(132)과 수직인 면인 2 차원 스크린(133)이 정해진다. 2 차원 스크린(133)에 대하여, 가상 공간 내의 가상적인 오브젝트가 투영되어, 2 차원 화상이 형성된다.20 is a diagram illustrating a
하나의 변형예에서는, 입력 장치(12)와 표시 장치(13)는, 별도의 위치에 배치되는 별개의 형태이다. 이 경우, 입력 장치(12)는, 터치 패널 또는 투영형 정전 용량 방식 터치 패널과 동등한 기능을 가지는 디바이스이다. 표시 장치(13)는, 프로세서(11)의 제어에 따라, 어플리케이션 화면 등을 전자 장치(10)의 유저에게 표시하는 것이면 되고, 예를 들면, 액정 디스플레이, 유기 EL을 이용한 디스플레이 또는 플라즈마 디스플레이 등이다.In one modified example, the
하나의 변형예에서는, 각도 결정부(24)는, 최소 이승법 이외의 기존의 방법을 이용하여, 회귀 직선의 기울기를 산출한다. 이 경우, 각도 결정부(24)는, 결정된 회귀 직선의 기울기에 대하여 180 도 회전시킬지의 여부를 나타내는 회전량을 결정하지 않고, 이에 수반하여, 독립 변수의 축 및 종속 변수의 축을 결정하지 않는다. 예를 들면, 칼망 필터 또는 파티클 필터 등의 알고리즘을 이용할 수 있다.In one modification, the
하나의 변형예에서는, 각도 결정부(24)는, 변수(D)를 정하지 않고, 데이터 포인트 버퍼에 보지되어 있는 데이터 포인트 중, 미리 정해진 보지 시간을 초과했다고 판단된 데이터 포인트의 보지를 종료하지 않는다. 이 경우, 각도 결정부(24)는, 변수(I)로 정하는 시간마다, 변수(I)로 정하는 시간씩 늦춘 특정 시간대에 저장된 데이터 포인트를 참조함으로써 각도를 결정한다.In one modification, the
하나의 변형예에서는, 각도 결정부(24)는, 변수(V)를 정하지 않는다. 이 경우, 각도 결정부(24)는, 독립 변수의 분산의 값에 상관없이, 함수(aop(x, y))를 이용하여 각도를 산출하여 결정한다.In one modification, the
하나의 변형예에서는, 전자 장치(10)는 중력 방향을 판정하는 것이 가능한 가속도 센서를 구비한다. 각도 결정부(24)는, 가속도 센서로부터 취득된 정보를 이용하여 가중 계수를 결정한다. 예를 들면, 스마트폰이 세로 들기가 되어 터치 패널(17)의 y 축이 중력 방향이 되는 경우, 각도 결정부(24)는 w를 2로 결정한다. 한편, 스마트폰이 가로 들기가 되어 터치 패널(17)의 x 축이 중력 방향이 되고, 한편 게임 어플리케이션이 구비하는 게임 엔진이 종횡의 좌표의 변환을 하지 않는 경우, 각도 결정부(24)는 w를 0.5 등의 1보다 작은 값으로 결정한다.In one variant, the
하나의 변형예에서는, 각도 결정부(24)는, 터치 이벤트를 취득할 때, 2 개의 변수로 이루어지는 수치의 조(x, y)를 취득하고, 데이터 포인트 취득 시간(t)을 대응시키지 않고, 2 개의 변수로 이루어지는 수치의 조(x, y)를 데이터 포인트 버퍼에 저장한다. 예를 들면, 각도 결정부(24)는, 데이터 포인트 취득 시간(t)에 대응하는 정보를 데이터 포인트 버퍼 이외의 기억 장치(14) 내의 메모리 영역 등에 기억하고, 데이터 포인트 버퍼에 저장하는 데이터에 대응시켜 관리할 수 있다.In one modification, the
이상에서 설명한 처리 또는 동작에 있어서, 어느 한 단계에서, 그 단계에서는 아직 이용할 수 없을 데이터를 이용하고 있는 등의 처리 또는 동작 상의 모순이 생기지 않는 한, 처리 또는 동작을 자유롭게 변경할 수 있다. 또한, 이상에서 설명한 각 실시예는, 본 발명을 설명하기 위한 예시이며, 본 발명은 이들 실시예로 한정되는 것은 아니다. 본 발명은, 그 요지를 일탈하지 않는 한, 다양한 형태로 실시할 수 있다.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
상기 회전량을 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의 시계열적으로 전후하는 데이터 포인트의 변위 방향에 기초하여, 상기 조작 대상 오브젝트를 제어하기 위한 각도를 결정함에 있어서, 상기 결정된 회귀 직선의 기울기에 대하여 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 축 중 어느 한 쪽의 축을 결정하는 단계와, 다른 한 쪽의 축을 종속 변수의 축으로서 결정하는 단계를 더 실행시키고,
상기 회귀 직선의 기울기를 결정하는 단계는,
상기 결정된 독립 변수의 축 및 종속 변수의 축에 더 기초하여, 회귀 직선의 기울기를 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.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.
상기 어느 한 쪽의 축을 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의, 상기 제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.
상기 어느 한 쪽의 축을 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의, 상기 제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
상기 회전량을 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의 시계열적으로 전후하는, 상기 결정된 독립 변수의 축의 값의 차분값의 음양의 수량을 비교함으로써, 상기 조작 대상 오브젝트를 제어하기 위한 각도를 결정함에 있어서, 상기 결정된 회귀 직선의 기울기에 대하여 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.
상기 회귀 직선의 기울기를 결정하는 단계는,
상기 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 평균 및 종속 변수의 평균을 결정하는 단계와,
상기 결정된 평균을 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의, 독립 변수의 편차 및 종속 변수의 편차를 결정하는 단계와,
상기 결정된 독립 변수의 편차를 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의 독립 변수의 분산을 결정하는 단계와,
상기 결정된 독립 변수의 편차 및 종속 변수의 편차를 이용하여, 상기 보지되어 있는 데이터 포인트에 있어서의 공분산을 결정하는 단계와,
상기 결정된 공분산을 상기 결정된 독립 변수의 분산으로 나눔으로써 회귀 직선의 기울기를 결정하는 단계
를 포함하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.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.
상기 제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 축은, 상기 터치 패널의 센서가 배열되는 방향의 짧은 쪽 방향을 나타내는 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.
상기 각도를 결정하는 단계는,
미리 정해진 처리 시간마다 각도를 결정하는 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.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.
상기 미리 정해진 처리 시간은, 게임을 실행하기 위한 프레임 레이트에 대응하는 시간이며,
상기 미리 정해진 처리 시간마다 결정되는 각도에 기초하여, 상기 미리 정해진 처리 시간마다 각도 및 크기를 결정하는 단계와,
상기 미리 정해진 처리 시간마다 결정되는 각도 및 크기에 기초하여, 상기 터치 패널에 표시되는 상기 조작 대상 오브젝트를 제어하는 단계
를 실행시키는 한 조의 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.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
상기 미리 정해진 처리 시간은, 게임을 실행하기 위한 프레임 레이트에 대응하는 시간이며,
상기 미리 정해진 처리 시간마다 결정되는 각도에 기초하여, 상기 미리 정해진 처리 시간마다 각도 및 크기를 결정하는 단계와,
상기 미리 정해진 처리 시간마다 결정되는 각도 및 크기에 기초하여, 상기 터치 패널에 표시되는 게임 화상을 촬영하기 위한 상기 조작 대상 오브젝트인 가상 카메라를 제어하는 단계
를 실행시키는 한 조의 프로그램을 저장하는 컴퓨터 판독 가능 기억 매체.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
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)
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)
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)
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 |
-
2018
- 2018-05-16 JP JP2018094656A patent/JP6389581B1/en active Active
-
2019
- 2019-04-22 CN CN201980047294.4A patent/CN112424739A/en active Pending
- 2019-04-22 KR KR1020207031560A patent/KR102362465B1/en active IP Right Grant
- 2019-04-22 WO PCT/JP2019/016971 patent/WO2019220873A1/en active Application Filing
-
2020
- 2020-11-05 US US17/089,816 patent/US11541311B2/en active Active
Patent Citations (2)
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 |