(57)【要約】【課題】グループにオブジェクトを加える場合の操作性や、グループからオブジェクトを除く場合の操作性を向上させること。【解決手段】表示装置と操作装置をユーザインタフェースとする情報処理を実行する情報処理装置であって、前記表示装置にオブジェクトを表示させるオブジェクト表示手段と、前記表示装置にグループオブジェクトを表示させるグループオブジェクト表示手段とを備え、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内に加えることと、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内から除くことと、前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置する前記オブジェクトをまとめて操作することを可能にする情報処理を実行することを特徴とする情報処理装置。【選択図】　　図２
2004110734.tif 000002
【特許請求の範囲】
【請求項１】
表示装置と操作装置をユーザインタフェースとする情報処理を実行する情報処理装置であって、前記表示装置にオブジェクトを表示させるオブジェクト表示手段と、前記表示装置にグループオブジェクトを表示させるグループオブジェクト表示手段とを備え、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内に加えることと、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内から除くことと、前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置する前記オブジェクトをまとめて操作することを可能にする情報処理を実行することを特徴とする情報処理装置。
【請求項２】
前記グループオブジェクト内に位置する前記オブジェクトを検出するオブジェクト検出手段を備え、前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置するとして前記オブジェクト検出手段により検出された前記オブジェクトをまとめて操作することを可能にする情報処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記オブジェクト検出手段は、前記オブジェクト又は前記グループオブジェクトに係るイベントの発生に応じて、前記グループオブジェクト内に位置する前記オブジェクトを検出することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記オブジェクト検出手段は、所定の時刻に又は所定の時間間隔で、前記グループオブジェクト内に位置する前記オブジェクトを検出することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置する前記オブジェクトの表示特性をまとめて変化させることを可能にする情報処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記表示特性は、表示位置又は表示サイズであることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
表示装置と操作装置をユーザインタフェースとする情報処理を実行する情報処理方法であって、前記表示装置にオブジェクトを表示させるオブジェクト表示段階と、前記表示装置にグループオブジェクトを表示させるグループオブジェクト表示段階とを備え、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内に加えることと、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内から除くことと、前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置する前記オブジェクトをまとめて操作することを可能にする情報処理を実行することを特徴とする情報処理方法。
【請求項８】
請求項７に記載の情報処理方法をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【０００２】
【従来の技術】
現在、コンピュータは様々な用途に使用されているが、その多くは表示装置や操作装置をユーザインタフェース（ＵＩ）とする情報処理を実行する。特に最近では、感覚的にも理解しやすいグラフィカルユーザインタフェース（ＧＵＩ）が主流である。表示装置としてはビットマップディスプレイ等、操作装置としてはマウスやキーボードやタッチパネルやスタイラスペン等が使用されている。
【０００３】
ＧＵＩには、通常、図形や画像等のように視覚的に表現されたグラフィカルオブジェクト（これを「オブジェクト」と略称する）が登場する。このようなＧＵＩでは、通常、ディスプレイに表示されているオブジェクトをマウス等で操作する。例えば、オブジェクトをマウスでクリックして選択状態にしたり、オブジェクトをマウスでダブルクリックして編集状態にしたり、オブジェクトをマウスでドラッグして表示特性を変化させたりするのである。表示特性の変化としては、表示位置の変化（移動）や表示サイズの変化（リサイズ）等が挙げられる。
【０００４】
このようなＧＵＩではさらに、ディスプレイに表示されている複数個のオブジェクトをグループ化することにより、それらの複数個のオブジェクトをまとめて操作できるようになっている場合が多い。例えば、グループ内のいずれかのオブジェクトをドラッグして、そのグループ内のオブジェクトの表示特性をまとめて変化させるのである。すなわち、そのグループ内のオブジェクトをまとめて移動したりリサイズしたりするのである。なお、グループ化は、マウスのドラッグやＳＨＩＦＴクリックにより実行できるようになっている場合が多い。
【０００５】
グループ化で問題になるのは、グループを構成するオブジェクトを変化させる場合の操作性である。グループを構成するオブジェクトを変化させるためには、古いグループを解消して新しいグループを構築し直せばよいのだが、毎回それを実行するのは面倒だからである。
【０００６】
このような場合の操作性を向上させる発明としては、表示装置にグループを示す指示を表示しておいて、これを利用してグループを分割させたり結合させたりできるようにすることにより、グループを分割させたり結合させたりする場合の操作性を向上させる発明が、特開平１０−６３４６２号公報に記載されている。
【０００７】
【特許文献１】
特開平１０−６３４６２号公報。
【０００８】
【発明が解決しようとする課題】
しかしながら、特開平１０−６３４６２号公報に記載されている発明は、グループを分割させたり結合させたりする場合の操作性は向上させるが、グループにオブジェクトを加える場合の操作性や、グループからオブジェクトを除く場合の操作性は向上させていない。
【０００９】
したがって、本発明は、グループにオブジェクトを加える場合の操作性や、グループからオブジェクトを除く場合の操作性を向上させることを課題とする。
【００１０】
【課題を解決するための手段】
請求項１に記載の発明（情報処理装置）は、表示装置と操作装置をユーザインタフェースとする情報処理を実行する情報処理装置であって、前記表示装置にオブジェクトを表示させるオブジェクト表示手段と、前記表示装置にグループオブジェクトを表示させるグループオブジェクト表示手段とを備え、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内に加えることと、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内から除くことと、前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置する前記オブジェクトをまとめて操作することを可能にする情報処理を実行する。
【００１１】
請求項２に記載の発明（情報処理装置）は、請求項１に記載の発明（情報処理装置）に関して、前記グループオブジェクト内に位置する前記オブジェクトを検出するオブジェクト検出手段を備え、前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置するとして前記オブジェクト検出手段により検出された前記オブジェクトをまとめて操作することを可能にする情報処理を実行する。
【００１２】
請求項３に記載の発明（情報処理装置）は、請求項２に記載の発明（情報処理装置）に関して、前記オブジェクト検出手段は、前記オブジェクト又は前記グループオブジェクトに係るイベントの発生に応じて、前記グループオブジェクト内に位置する前記オブジェクトを検出する。
【００１３】
請求項４に記載の発明（情報処理装置）は、請求項２に記載の発明（情報処理装置）に関して、前記オブジェクト検出手段は、所定の時刻に又は所定の時間間隔で、前記グループオブジェクト内に位置する前記オブジェクトを検出する。
【００１４】
請求項５に記載の発明（情報処理装置）は、請求項１に記載の発明（情報処理装置）に関して、前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置する前記オブジェクトの表示特性をまとめて変化させることを可能にする情報処理を実行する。
【００１５】
請求項６に記載の発明（情報処理装置）は、請求項５に記載の発明（情報処理装置）に関して、前記表示特性は、表示位置又は表示サイズである。
【００１６】
請求項７に記載の発明（情報処理方法）は、表示装置と操作装置をユーザインタフェースとする情報処理を実行する情報処理方法であって、前記表示装置にオブジェクトを表示させるオブジェクト表示段階と、前記表示装置にグループオブジェクトを表示させるグループオブジェクト表示段階とを備え、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内に加えることと、前記操作装置で前記オブジェクトを操作して、そのオブジェクトを前記グループオブジェクト内から除くことと、前記操作装置で前記グループオブジェクトを操作して、そのグループオブジェクト内に位置する前記オブジェクトをまとめて操作することを可能にする情報処理を実行する。
【００１７】
請求項８に記載の発明（情報処理プログラム）は、請求項７に記載の情報処理方法をコンピュータに実行させる。
【００１８】
請求項１に記載の発明（情報処理装置）は、操作装置でオブジェクトを操作して、そのオブジェクトをグループオブジェクト内に加えることと、操作装置でオブジェクトを操作して、そのオブジェクトをグループオブジェクト内から除くことと、操作装置でグループオブジェクトを操作して、そのグループオブジェクト内に位置するオブジェクトをまとめて操作することを可能にする情報処理を実行することにより、グループにオブジェクトを加える場合の操作性や、グループからオブジェクトを除く場合の操作性を向上させることができる。
【００１９】
請求項７に記載の発明（情報処理方法）は、操作装置でオブジェクトを操作して、そのオブジェクトをグループオブジェクト内に加えることと、操作装置でオブジェクトを操作して、そのオブジェクトをグループオブジェクト内から除くことと、操作装置でグループオブジェクトを操作して、そのグループオブジェクト内に位置するオブジェクトをまとめて操作することを可能にする情報処理を実行することにより、グループにオブジェクトを加える場合の操作性や、グループからオブジェクトを除く場合の操作性を向上させることができる。
【００２０】
請求項８に記載の発明（情報処理プログラム）は、操作装置でオブジェクトを操作して、そのオブジェクトをグループオブジェクト内に加えることと、操作装置でオブジェクトを操作して、そのオブジェクトをグループオブジェクト内から除くことと、操作装置でグループオブジェクトを操作して、そのグループオブジェクト内に位置するオブジェクトをまとめて操作することを可能にする情報処理をコンピュータに実行させることにより、グループにオブジェクトを加える場合の操作性や、グループからオブジェクトを除く場合の操作性を向上させることができる。
【００２１】
【発明の実施の形態】
本発明の実施の形態について説明する。
【００２２】
図１は、本発明の実施の形態の例である情報処理装置１１を表す。図１の情報処理装置１１には、表示装置１２と、操作装置１３と、記憶装置１４とが接続されている。情報処理装置１１はここではパソコンであり、表示装置１２はここではディスプレイであり、操作装置１３はここではマウスやキーボードであり、記憶装置１４はここではハードディスクである。表示装置１２や操作装置１３や記憶装置１４は、情報処理装置１１の内蔵機器でも周辺機器でもよい。
【００２３】
図１の情報処理装置１１は、表示装置１２と操作装置１３をＵＩとする情報処理を実行する。さらに言えば、記憶装置１４にはＧＵＩを提供するようなプログラムがインストールされており、このＧＵＩには上記のような「オブジェクト」が登場する。このＧＵＩでは、表示装置１２に表示されている「オブジェクト」を操作装置１３により操作することができる。
【００２４】
図２は、図１の情報処理装置１１のＧＵＩについて説明するための図である。図２Ａと図２Ｂとはそれぞれ、オブジェクト２１と、グループオブジェクト２２と、マウスポインタ２３とが、表示装置１２に表示されている様子を表す。図２Ａには、４個のオブジェクト２１（円形２１Ａ・三角形２１Ｂ・四角形２１Ｃ・六角形２１Ｄ）が存在し、図２Ｂには、３個のオブジェクト２１（円形２１Ａ・三角形２１Ｂ・四角形２１Ｃ）が存在する。なお、図１の情報処理装置１１がウィンドウシステムを採用している場合には、オブジェクト２１とグループオブジェクト２２とは、同一のウィンドウ内に存在する表示物同士であるとする。
【００２５】
このＧＵＩでは、複数個のオブジェクト２１をグループ化することにより、それらの複数個のオブジェクト２１をまとめて操作することができる。そして、複数個のオブジェクト２１をグループ化するために利用されるのが、グループオブジェクト２２である。このＧＵＩでは、同一のグループオブジェクト２２内に位置するオブジェクト２１同士がグループ化される。そして、操作装置１３でグループオブジェクト２２を操作して、そのグループオブジェクト２２内に位置するオブジェクト２１をまとめて操作するのである。
【００２６】
図２Ａでは、４個のオブジェクト２１の内の３個のオブジェクト２１（円形２１Ａ・三角形２１Ｂ・四角形２１Ｃ）が、グループオブジェクト２２によりグループ化されている。図２Ｂでは、３個のオブジェクト２１すべて（円形２１Ａ・三角形２１Ｂ・四角形２１Ｃ）が、グループオブジェクト２２によりグループ化されている。
【００２７】
なお、図２のように、グループオブジェクト２２は閉曲線２４を有する。この閉曲線２４が、グループオブジェクト２２の内部と外部とを分かつボーダラインとなる。すなわち、このＧＵＩでは、同一の閉曲線２４内に位置するオブジェクト２１同士がグループ化される。
【００２８】
ここで、グループを構成するオブジェクト２１を変化させる場合として、グループにオブジェクト２１を加える場合と、グループからオブジェクト２１を除く場合について説明する。
【００２９】
図２Ａは、操作装置２１でオブジェクト２１Ｄを操作して、オブジェクト２１Ｄをグループオブジェクト２２内に加える様子を表す。図２Ａ’がその事後の様子を表している。このＧＵＩでは、上記のように、同一のグループオブジェクト２２内に位置するオブジェクト２１同士がグループ化される。したがって、この操作によって、グループにオブジェクト２１Ｄが加えられたのである。
【００３０】
図２Ｂは、操作装置２１でオブジェクト２１Ｃを操作して、オブジェクト２１Ｃをグループオブジェクト２２内から除く様子を表す。図２Ｂ’がその事後の様子を表している。このＧＵＩでは、上記のように、同一のグループオブジェクト２２内に位置するオブジェクト２１同士がグループ化される。したがって、この操作によって、グループからオブジェクト２１Ｃが除かれたのである。
【００３１】
オブジェクト２１をグループオブジェクト２２内に加える操作や、オブジェクト２１をグループオブジェクト２２内から除く操作は、マウスのドラッグ等により実現可能である。従来、前者の操作はマウスのＳＨＩＦＴクリック等により実現していたものであり、後者の操作に至っては古いグループを解消して新しいグループを構築し直すよりほかなかったものである。このように、図１の情報処理装置１１のＧＵＩは、グループにオブジェクトを加える場合の操作性や、グループからオブジェクトを除く場合の操作性を向上させることができる。
【００３２】
図１についてふたたび説明する。図１の情報処理装置１１は、機能ブロックとして、オブジェクト表示部１５と、グループオブジェクト表示部１６と、イベント発生検出部１７と、オブジェクト検出部１８とを備える。
【００３３】
オブジェクト表示部１５は、表示装置１２にオブジェクトを表示させる。グループオブジェクト表示部１６は、表示装置１２にグループオブジェクトを表示させる。図１の情報処理装置１１においては、ユーザは操作装置１３を操作して、オブジェクトやグループオブジェクトを作成したり、消去したり、記憶装置１５に保存させたり、記憶装置１５から再生させたりすることができる。これらの作成操作や消去操作や保存操作や再生操作に応じて、オブジェクト表示部１５とグループオブジェクト表示部１６はそれぞれ、表示装置１２にオブジェクトとグループオブジェクトを登場（不表示状態から表示状態にする）させたり、表示装置１２からオブジェクトとグループオブジェクトを退去（表示状態から不表示状態にする）させたりする。
【００３４】
イベント発生検出部１７は、オブジェクトやグループオブジェクトに係るイベントの発生を検出する。ここで言う「イベント」は、オブジェクトやグループオブジェクトの移動やリサイズや作成や消去や保存や再生等である。これらの全部を検出してもいいし、これらの一部を検出してもいい。
【００３５】
オブジェクト検出部１８は、グループオブジェクト内に位置するオブジェクトを検出する。ここでは、イベント発生検出部１７が上記イベントの発生を検出すると、これに応じてオブジェクト検出部１８が上記オブジェクトを検出する。また、オブジェクト検出部１８が検出対象とするのは、ここでは表示装置１２に表示されている全部のオブジェクトとグループオブジェクトである。
【００３６】
（ストローク）
上記のように、図１の情報処理装置１１においては、ユーザは操作装置１３を操作して、オブジェクトやグループオブジェクトを作成することができる。具体的に言うとここでは、ユーザがマウスをドラッグすると、これに応じて情報処理装置１１がドラッグ開始時からドラッグ終了時までの座標点列（これを「ストローク」と呼称する）を取得して、これをオブジェクトやグループオブジェクトとして表示装置１２に表示させる。ストロークとは、マウス位置を所定の時間間隔でサンプリングして取得した座標点の列である。なお、マウスの代わりにタッチパネルやスタイラスタペンを使用してもよく、この場合には接地開始時から接地終了時までの座標点列を取得する。
【００３７】
図３は、ストロークの概念について説明するための図である。図３において、（ｘ［ｉ］，ｙ［ｉ］）はｉ番目のサンプリングで取得された座標点（ｘ，ｙ）を表す。図３には、０番目の座標点からｎ番目の座標点までが記載されている。
【００３８】
以下、Ｃ言語の構造体形式の書式を使用して説明する。オブジェクトのデータ構造を表す構造体ＯＢＪＥＣＴは、図４のように定義できる。
【００３９】
ｘ［］とｙ［］はそれぞれストロークを構成する座標点のｘ座標とｙ座標を保持する配列であり、ＮＭＡＸはその配列の最大数を規定する定数であり、ｎはストロークを構成する座標点の個数を保持する変数である。ｇｘとｇｙはそれぞれオブジェクトの重心の座標点のｘ座標とｙ座標を保持する変数であり、それぞれｘ［］の平均値とｙ［］の平均値を保持する。ｐｇｘとｐｇｙはそれぞれ前回のイベント発生時におけるオブジェクトの重心の座標点のｘ座標とｙ座標を保持する変数である。
【００４０】
ｉｓＧｒｏｕｐは真偽値（真：Ｔｒｕｅ、偽：Ｆａｌｓｅ）を保持する変数であり、Ｔｒｕｅはそのオブジェクトがグループオブジェクトであることを意味して、Ｆａｌｓｅはそのオブジェクトがグループオブジェクト以外のオブジェクトであることを意味する。ｇａｒｒｅｙ［］はそのオブジェクトがグループオブジェクトである場合において、そのグループオブジェクト内に位置するオブジェクトｏｂｊ［］のインデックス番号を順次保持する配列であり、ＧＲＯＵＰＭＡＸその配列の最大数を規定する定数であり、ｇｎはそのオブジェクトがグループオブジェクトである場合において、そのグループオブジェクト内に位置するオブジェクトｏｂｊ［］の個数を保持する変数である。
【００４１】
ｏｂｊ［］はＯＢＪＥＣＴ型の構造体を保持する配列であり、ＯＢＪＭＡＸはその配列の最大数を規定する定数であり、ｍａｘは現時点でのオブジェクトの個数を保持する変数である。ｃｆｌａｇはイベント発生時に真偽値を保持するために使用される変数である。
【００４２】
（情報処理）
図５は、図１の情報処理装置１１により実行される情報処理に係るフローチャートである。オブジェクトやグループオブジェクトを作成する際にはまず、作成するオブジェクトがグループオブジェクトであるか否かを指定（Ｓ５０１）しておく。続いて、オブジェクトを作成するためにユーザがマウスのドラッグを開始（Ｓ５０２）すると、ｍａｘを１インクリメント（Ｓ５０３）する。次に、ｍａｘ番目のｏｂｊ［］配列のストロークのｎを初期化（Ｓ５０４）する。続いて、ユーザがマウスをドラッグ（Ｓ５０５）すると、マウスのドラッグが継続しているか否かを判断（Ｓ５０６）した上で、マウスのドラッグが継続している場合には、マウス位置をサンプリングして取得した座標点（ｘ，ｙ）について、ｘとｙをそれぞれｏｂｊ［ｍａｘ］．ｘ［ｏｂｊ［ｍａｘ］．ｎ］とｏｂｊ［ｍａｘ］．ｙ［ｏｂｊ［ｍａｘ］．ｎ］に代入（Ｓ５０７）して、ｏｂｊ［ｍａｘ］．ｎを１インクリメント（Ｓ５０８）する。マウスのドラッグが継続していない場合には、０番目からｏｂｊ［ｍａｘ］．ｎ番目までのｏｂｊ［ｍａｘ］．ｘ［］配列の平均値とｏｂｊ［ｍａｘ］．ｙ［］配列の平均値をそれぞれ計算（Ｓ５０９）し、ｏｂｊ［ｍａｘ］．ｇｘとｏｂｊ［ｍａｘ］．ｇｙにそれぞれの値を代入（Ｓ５１０）する。さらに、ｏｂｊ［ｍａｘ］．ｐｇｘとｏｂｊ［ｍａｘ］．ｐｇｙにもそれぞれの値を代入（Ｓ５１０）する。最後に、作成されたオブジェクトがグループオブジェクトであるか否かを判断（Ｓ５１１）して、グループオブジェクトであればｏｂｊ［ｍａｘ］．ｉｓＧｒｏｕｐにＴｒｕｅを代入して、グループオブジェクトでなければｏｂｊ［ｍａｘ］．ｉｓＧｒｏｕｐにＦａｌｓｅを代入する。このようにして、オブジェクトやグループオブジェクトが作成される。
【００４３】
図６は、イベント発生検出部１７により実行される情報処理に係るフローチャートである。上述したイベントが発生（Ｓ６０１）した際にはまず、ｃｆｌａｇをＦａｌｓｅに初期化（Ｓ６０２）して、テンポラリ変数ｊを０に初期化（Ｓ６０３）する。次に、ｊ番目のオブジェクトについて、順次ｏｂｊ［ｊ］．ｇｘとｏｂｊ［ｊ］．ｇｙを取得（Ｓ６０４）して、さらにｏｂｊ［ｊ］．ｐｇｘとｏｂｊ［ｊ］．ｐｇｙを取得（Ｓ６０５）して、ｏｂｊ［ｊ］．ｇｘとｏｂｊ［ｊ］．ｐｇｘやｏｂｊ［ｊ］．ｇｙとｏｂｊ［ｊ］．ｐｇｙを、それぞれ比較（Ｓ６０６）する。値に変化がある場合には、ｃｆｌａｇにＴｒｕｅを代入（Ｓ６０７）して、ｏｂｊ［ｊ］．ｐｇｘとｏｂｊ［ｊ］．ｐｇｙにそれぞれｏｂｊ［ｊ］．ｇｘとｏｂｊ［ｊ］．ｇｙを代入（Ｓ６０８）して、ｊがｍａｘであるか否かを判断（Ｓ６０９）する。値に変化がない場合にも同様に、ｊがｍａｘであるか否かを判断（Ｓ６０９）する。ｊがｍａｘでない場合には、ｊを１インクリメント（Ｓ６１０）してこれまでの情報処理を繰り返し実行して、ｊがｍａｘである場合には、情報処理を終了する。
【００４４】
図７は、オブジェクト検出部１８により実行される情報処理に係るフローチャートである。イベント発生検出部１７によりｃｆｌａｇにＴｒｕｅが代入されると、これに応じてオブジェクト検出部１８による情報処理が実行されることになる。まず、テンポラリ変数ｉを０に初期化（Ｓ７０１）して、ｏｂｊ［ｉ］．ｉｓＧｒｏｕｐがＴｒｕｅであるか否かを判断（Ｓ７０２）する。これは、ｉ番目のオブジェクトがグループオブジェクトであるか否かを判断することに相当する。ｉ番目のオブジェクトがグループオブジェクトである場合には、テンポラリ変数ｊを０に初期化（Ｓ７０３）して、さらにｏｂｊ［ｉ］．ｇｎも０に初期化（Ｓ７０３）する。次に、ｉとｊが異なるか否かを判断（Ｓ７０４）して、ｉとｊが異なる場合には、ｉｆｌａｇという変数をＴｒｕｅに初期化（Ｓ７０５）して、テンポラリ変数ｋを０に初期化（Ｓ７０６）する。次に、ｏｂｊ［ｊ］のストロークを構成する座標点（ｏｂｊ［ｉ］．ｘ［ｋ］，ｏｂｊ［ｉ］．ｙ［ｋ］）が、ｏｂｊ［ｉ］のストローク内に位置するか否かを判断（Ｓ７０７）する。この判断を０番目からｏｂｊ［ｊ］．ｎ番目の座標点について実行（Ｓ７０８・Ｓ７０９）して、その結果すべての座標点がストローク内に位置すると判断した場合、すなわちｉｆｌａｇがＴｒｕｅのままであると判断した場合（Ｓ７１０）には、ｏｂｊ［ｉ］．ｇａｒｒａｙ［］配列のｏｂｊ［ｉ］．ｇｎ番目にｊを代入（Ｓ７１１）して、ｏｂｊ［ｉ］．ｇｎを１インクリメント（Ｓ７１１）する。なお、途中の判断しだいで図７のように、ｉｆｌａｇにＦａｌｓｅが代入（Ｓ７１２）されることになる。そして、ｊがｍａｘでない場合には、ｊを１インクリメントしてこれまでの情報処理を繰り返し実行（Ｓ７１３・Ｓ７１４）する。さらに、ｉがｍａｘでない場合には、ｉを１インクリメントしてこれまでの情報処理を繰り返し実行（Ｓ７１５・Ｓ７１６）して、ｉがｍａｘである場合には、情報処理を終了する。これにより、グループオブジェクトであるｏｂｊ［ｉ］内に位置するオブジェクトの番号が、ｏｂｊ［ｉ］．ｇａｒｒａｙ［０］、ｏｂｊ［ｉ］．ｇａｒｒａｙ［１］、、、ｏｂｊ［ｉ］．ｇａｒｒａｙ［ｏｂｊ［ｉ］．ｇｎ］に順次保持される。
【００４５】
図８も、オブジェクト検出部１８により実行される情報処理に係るフローチャートである。図８は図７の変形例である。図７では、オブジェクトのストロークを構成するすべての座標点が、グループオブジェクトのストローク内に位置する場合に、そのオブジェクトがそのグループオブジェクト内に位置するとしたが、図８では、オブジェクトのストロークを構成する座標点のうちの最低１個が、グループオブジェクトのストローク内に位置する場合に、そのオブジェクトがそのグループオブジェクト内に位置するとする。図８が図７と異なる点としては、Ｓ７０５とＳ７１２が存在しない点や、Ｓ７０７とＳ７１１がそれぞれＳ８０１とＳ８０２に置換されている点を挙げることができる。すなわち、Ｓ８０１にて、ｏｂｊ［ｊ］のストロークを構成する座標点（ｏｂｊ［ｉ］．ｘ［ｋ］，ｏｂｊ［ｉ］．ｙ［ｋ］）が、ｏｂｊ［ｉ］のストローク内に位置しないか否かを判断して、その結果座標点のうちの最低１個がストローク内に位置すると判断した場合には、Ｓ８０２にて、ｏｂｊ［ｉ］．ｇａｒｒａｙ［］配列のｏｂｊ［ｉ］．ｇｎ番目にｊを代入して、ｏｂｊ［ｉ］．ｇｎを１インクリメントする。
【００４６】
（内包判断）
オブジェクト検出部１８は、図７のようにして、グループオブジェクト内に位置するオブジェクトを検出してもいいし、図８のようにして、グループオブジェクト内に位置するオブジェクトを検出してもいい。ところで、図７や図８においては、グループオブジェクト内にオブジェクトが位置するか否かを判断するために、ストローク内に座標点が位置するか否かを判断する情報処理を実行した。このような情報処理を「内包判断」と呼ぶことにして、ここでは「内包判断」について説明することにする。なお、内包判断については「ｈｔｔｐ：／／ｗｗｗ．ｗｏｍｂａｔ．ｏｒ．ｊｐ／ｔｏｍｏｙａｓｈｕｔｔｌｅ／ｓｈｔｍ１／ａｌｇｏｒｉｔｈｍ／Ｈｏｕｇａｎ．ｈｔｍ」等が参酌される。
【００４７】
さて、ストロークは複数個の座標点により構成されており、これらの座標点を結んだ軌跡は多角形として考えることができる。ストローク内に座標点が位置するか否かの判断は、この多角形内に座標点が位置するか否かの判断に置き換えられる。
【００４８】
図９は、このような内包判断について説明するための図である。まず、多角形は三角形の集合であると考えて、座標点がこれらの三角形内に位置するか否かを判断する。ここでは、座標点Ｐａや座標点Ｐｂが三角形ＡＢＣ内に位置するか否かを判断することにする。
【００４９】
座標点Ｇは、三角形ＡＢＣの重心である。幾何学的に言って、線分ＰａＧや線分ＰｂＧがそれぞれ線分ＡＢと線分ＢＣと線分のいずれかと交差した場合には、座標点Ｐａや座標点Ｐｂはそれぞれ三角形ＡＢＣ内に位置しない。実際、Ｐａについては、線分ＰａＧは線分ＢＣと交差していて、Ｐａは三角形ＡＢＣ内に位置していないが、Ｐｂについては、線分ＰｂＧは線分ＡＢと線分ＢＣと線分のいずれとも交差してなく、Ｐｂは三角形ＡＢＣ内に位置している。すなわち、座標点Ｐａや座標点Ｐｂが三角形ＡＢＣ内に位置するか否かの判断は、線分ＰａＧや線分ＰｂＧがそれぞれ線分ＡＢと線分ＢＣと線分のいずれとも交差しないか否かの判断に置き換えられる。
【００５０】
結局、これらの三角形のいずれかに関して、座標点が三角形内に位置する場合には、その座標点は多角形内に位置することになり、その座標点はストローク内に位置すると判断することができる。一方、これらの三角形のすべてに関して、座標点が三角形内に位置しない場合には、その座標点は多角形内に位置しないことになり、その座標点はストローク内に位置しないと判断することができる。
【００５１】
（オブジェクトの検出）
図７や図８では、オブジェクト検出部１８は、オブジェクトやグループオブジェクトに係るイベントの発生に応じて、グループオブジェクト内に位置するオブジェクトを検出した。一方で、オブジェクト検出部１８は、例えば３秒間隔というように「所定の時間間隔」で、グループオブジェクト内に位置するオブジェクトを検出してもよいし、例えば１０時３０分０秒と１秒と３秒と４秒と６秒、、、というように「所定の時刻」に、グループオブジェクト内に位置するオブジェクトを検出してもよい。
【００５２】
（オブジェクトの操作）
図１の情報処理装置１１では、操作装置１３でグループオブジェクトを操作して、そのグループオブジェクト内に位置するオブジェクトをまとめて操作するということを上述した。この具体例としては、グループオブジェクト内に位置するオブジェクトの表示特性をまとめて変化させることが挙げられる。例えば、グループオブジェクト内に位置するオブジェクトをまとめて移動したりリサイズしたりするのである。
【００５３】
図１０Ａは、マウスでグループオブジェクト２２をドラッグして、グループオブジェクト２２内に位置する３個のオブジェクト２１Ａ・２１Ｂ・２１Ｃをまとめて移動している様子を表す。これは、複数個のオブジェクトをまとめて操作したいときなどに便利である。図１０Ｂは、マウスでオブジェクト２１Ｃを個別にドラッグして、オブジェクト２１Ｃを個別に移動している様子を表す。これは、オブジェクトを個別に操作したいときなどのほか、グループオブジェクト内にオブジェクトを加えるときや、グループオブジェクト内からオブジェクトを除くときなどにも利用される。
【００５４】
図１１は、図１０のような操作の際に、図１の情報処理装置１１により実行される情報処理に係るフローチャートである。図１０のような操作のためにユーザがマウスのドラッグを開始（Ｓ１１０１）すると、ｄｉｓｔｍｉｎを所定の数値で初期化（Ｓ１１０２）する。所定の数値とは、ストロークを構成する座標点とドラッグ開始時のマウス位置をサンプリングして取得された座標点（ｘ，ｙ）との距離を検出したい最大の距離範囲であり、例えばｄｉｓｔｍｉｎ＝１２として初期化すると、上記の距離が１２より小さい場合に、最近傍のオブジェクトを選択状態とすることになる。次に、テンポラリ変数ｉを０で初期化（Ｓ１１０３）して、さらに選択したオブジェクトｏｂｊ［］配列の番号を保持するための変数ｓｅｌｎｕｍを−１で初期化（Ｓ１１０４）する。次に、テンポラリ変数ｊを０で初期化（Ｓ１１０５）する。次に、オブジェクトｏｂｊ［ｉ］のｊ番目の座標点（ｏｂｊ［ｉ］．ｘ［ｊ］，ｏｂｊ［ｉ］．ｙ［ｊ］）と座標点（ｘ，ｙ）との距離ｄｉｓｔを計算（Ｓ１１０６）して、ｄｉｓｔがｄｉｓｔｍｉｎより小さいか否かをを判断（Ｓ１１０７）して、ｄｉｓｔがｄｉｓｔｍｉｎより小さい場合には、ｄｉｓｔｍｉｎにｄｉｓｔの値を代入（Ｓ１１０８）して、ｓｅｌｎｕｍにｉを代入（Ｓ１１０８）する。そして、ｊがｏｂｊ［ｉ］．ｎでない場合には、ｊを１インクリメントしてこれまでの情報処理を繰り返し実行（Ｓ１１０９・Ｓ１１１０）する。さらに、ｉがｍａｘでない場合には、ｉを１インクリメントしてこれまでの情報処理を繰り返し実行（Ｓ１１１１・Ｓ１１１２）して、ｉがｍａｘである場合には、次のステップに移る。
【００５５】
次のステップでは、ｓｅｌｎｕｍが−１ではないか否かを判断（Ｓ１１１３）する。ｓｅｌｎｕｍが−１である場合には、座標点（ｘ，ｙ）にｄｉｓｔｍｉｎより近傍のオブジェクトは存在しなかったものとして、情報処理を終了する。ｓｅｌｎｕｍが−１である場合には、マウス位置をサンプリングして座標点（ｘ’，ｙ’）を取得（Ｓ１１１４）する。次に、選択したｏｂｊ［ｓｅｌｎｕｍ］．ｉｓＧｒｏｕｐがＴｒｕｅであるか否かを判断（Ｓ１１１５）する。選択したｏｂｊ［ｓｅｌｎｕｍ］．ｉｓＧｒｏｕｐがＴｒｕｅである場合、すなわちｓｅｌｎｕｍ番目のオブジェクトがグループオブジェクトである場合には、ｏｂｊ［ｓｅｌｎｕｍ］と、ｏｂｊ［ｓｅｌｎｕｍ］．ｇａｒｒａｙ［０］からｏｂｊ［ｓｅｌｎｕｍ］．ｇａｒｒａｙ［ｏｂｊ［ｓｅｌｎｕｍ］．ｇｎ］まで、すなわちｏｂｊ［ｓｅｌｎｕｍ］内に位置するオブジェクトとを、座標点（ｘ’，ｙ’）に追従して移動（Ｓ１１１６）させ、情報処理を終了する。選択したｏｂｊ［ｓｅｌｎｕｍ］．ｉｓＧｒｏｕｐがＴｒｕｅでない場合、すなわちｓｅｌｎｕｍ番目のオブジェクトがグループオブジェクトでない場合には、ｏｂｊ［ｓｅｌｎｕｍ］のみを、座標点（ｘ’，ｙ’）に追従して移動（Ｓ１１１７）させ、情報処理を終了する。
【００５６】
（変形例）
図１の情報処理装置１１は、本発明に係る「情報処理装置」の実施の形態の例である。さらに、図１の情報処理装置１１により実行される情報処理方法は、本発明に係る「情報処理方法」の実施の形態の例である。さらに、当該情報処理方法をコンピュータに実行させるコンピュータプログラムは、本発明に係る「情報処理プログラム」の実施の形態の例である。
【００５７】
図１２は、本発明の実施の形態の例である情報処理プログラム１２１の利用態様を表す。図１２Ａでは、情報処理プログラム１２１はコンピュータのハードディスクにインストールされている。図１２Ｂでは、情報処理プログラム１２１は記録媒体に記録されており、これを使用して情報処理プログラム１２１をコンピュータに実行させることができる。このような記録媒体としては、図１２Ｃのように、フロッピー（登録商標）ディスクや、ＣＤ−ＲＯＭや、ＭＯディスクや、磁気ディスクや、ＤＶＤや、半導体メモリ等を挙げることができる。図１２Ｄでは、情報処理プログラム１２１はダウンロードサイトからネットワークを介してコンピュータにダウンロードされている。このようなネットワークとしては、イントラネットのようなＬＡＮや、インターネットのようなＷＡＮ等を挙げることができる。有線でも無線でもよい。
【００５８】
【発明の効果】
このように、本発明は、グループにオブジェクトを加える場合の操作性や、グループからオブジェクトを除く場合の操作性を向上させることを可能にする。
【図面の簡単な説明】
【図１】本発明の実施の形態の例である情報処理装置を表す。
【図２】図１の情報処理装置のＧＵＩについて説明するための図である。
【図３】ストロークの概念について説明するための図である。
【図４】オブジェクトのデータ構造を表す構造体ＯＢＪＥＣＴである。
【図５】図１の情報処理装置により実行される情報処理に係るフローチャートである。
【図６】イベント発生検出部により実行される情報処理に係るフローチャートである。
【図７】オブジェクト検出部により実行される情報処理に係るフローチャートである。
【図８】オブジェクト検出部により実行される情報処理に係るフローチャートである。
【図９】内包判断について説明するための図である。
【図１０】オブジェクトの操作について説明するための図である。
【図１１】図１の情報処理装置により実行される情報処理に係るフローチャートである。
【図１２】本発明の実施の形態の例である情報処理プログラムの利用態様を表す。
【符号の説明】
１１　情報処理装置
１２　表示装置
１３　操作装置
１４　記憶装置
１５　オブジェクト表示部
１６　グループオブジェクト表示部
１７　イベント発生検出部
１８　オブジェクト検出部
２１　オブジェクト
２２　グループオブジェクト
２３　マウスポインタ
２４　閉曲線
１２１　情報処理プログラム
【図１】
2004110734.tif 000003
【図２】
2004110734.tif 000004
【図３】
2004110734.tif 000005
【図４】
2004110734.tif 000006
【図５】
2004110734.tif 000007
【図６】
2004110734.tif 000008
【図７】
2004110734.tif 000009
【図８】
2004110734.tif 000010
【図９】
2004110734.tif 000011
【図１０】
2004110734.tif 000012
【図１１】
2004110734.tif 000013
【図１２】
2004110734.tif 000014