日本語 English
株式会社ヒューリンクス
TEL:03-5642-8384
営業時間:9:00-17:30

編集メニュー

  1. 数式をコピーする
  2. ソースコードを生成する

編集メニューには、Windows 標準の編集機能に加え、条件の競合を対処する手段、および、プログラム全体の設定項目が用意されています。このうち幾つかのオプションは、アイコンバーにも用意されています。

   メニューオプション
機能
選択できる条件
元に戻す実行した動作を前の時点に戻します。任意の動作を実行した後
再実行直前に取り消した動作を前の時点に戻します。元に戻すを使用した後
選択選択すると、選択モードが有効になります。選択モードは、描画ツールを使用したり、図形や描画ウィンドウの移動中以外は、常に有効です。
すべてを選択現在開いている描画ウィンドウにあるすべてのオブジェクトを選択します。常に選択可能
選択を解除選択状態のオブジェクトを選択解除します。常に選択可能
切り取りオブジェクトを削除します。ただし、その内容は、任意の場所に貼り付けることができるよう一時的に格納されます。オブジェクトを選択したとき
コピーオブジェクトは削除されません。任意の場所にその内容を貼り付けることができるよう一時的に格納されます。オブジェクトを選択したとき
形式を指定してコピー数式をコピーする他のプログラムの選択肢がサブメニューに表示されます。数式や公式を選択したとき
図形をコピー描画ウィンドウのすべてを Enhanced Metafile (.emf) 形式でコピーします常に選択可能
選択範囲をコピー描画ウィンドウでカーソルをドラッグして作成される矩形の内側の選択範囲をコピーします。常に選択可能
貼り付け切り取りまたはコピーされた内容を現在の描画ウィンドウに貼り付けます。オブジェクト (複数可) を切り取りまたはコピーしたとき
削除選択したオブジェクトを削除します。内容は格納されません。1つまたは複数のオブジェクトを選択したとき
整列選択したオブジェクトの選択や表示を容易にするために、それ以外のオブジェクトの最前面 (前面へ移動) または最背面 (背面へ移動) に配置します。1つまたは複数のオブジェクトを選択したとき
Mathematica に送る別ウィンドウで Mathematica を実行しているとき、数式を Mathematica にインプットします。Windows 版のみ
出力された数式や公式を選択したとき
条件に変換選択した出力結果 [2θ] を他の条件との競合がない限り、入力条件に変換します。出力された数式を選択したとき
測定結果に変換選択した条件を測定結果 (出力) に変換します。入力条件を選択したとき
数値に変換演算結果を数式から数値に変換します。数式の出力結果を選択したとき
数式に変換演算結果を数値から数式に変換します。数値の出力結果を選択したとき
詳細…テキストの編集ダイアログを表示して、テキストブロックを編集します。テキストブロックを選択したとき
パラメータ…関数、軌跡、トレースのパラメータを編集します。関数、軌跡、トレースのいずれかを選択したとき
プロパティ…選択オブジェクトの表示プロパティを編集します。同一タイプの1つまたは複数のオブジェクトを選択したとき
環境設定…表示法の初期値や、プロジェクトの図形、テキスト、計算方法のプロパティを定義します。常に選択可能

注意:Mac 版では、環境設定は Geometry Expressions メニューにあります。

 

1. 数式をコピーする

数式や関数を代数システムやその他のプログラムにコピーするには:

  • 図形内または出力ウィンドウにある数式を選択します。
  • 編集 > 形式を指定してコピー を選択するか、選択した数式を右クリックして、Geometry Expressions で作成した数式や関数のコピー先となる他のプログラムの選択肢を表示します。
  • MathML には Content と Presentation の2つの標準タイプを選択できるほか、一般的なコンピュータ代数プログラムの特異性にあわせて幾つかの形式が用意されています。
  • TeX タイプセット出力には、インラインディスプレイWikipedia の3つの選択肢が用意されています。実際に生成される TeX は、TeX コードの開始と終了を区切るマーク以外は同じ内容です。
  • 選択した数式を特殊文字を含まないテキスト文字列に変換する汎用の文字列出力も用意されています:
     は、> (((a)^(2)+(b)^(2)+(cos(θ)*b*a*(-2))))^(1/2) としてコピーされます。
  • Geometry Expressions では、様々な言語のソースコードを生成できます。

サブメニューを選択すると、選択された数式が Windows のクリップボードにコピーされ、それぞれ該当するアプリケーションにその内容を貼り付ける (Ctrl+V) ことができます。

 

2. ソースコードを生成する

Geometry Expressions では、様々な言語のコンピュータ・ソースコードを生成することができます。

Geometry Expressions には、2種類の数式表現があります:

  • スカラー
  • ベクトル

ソースコードは、中間変数の有無によってその形式が異なります。

なお、各言語間で生成される数式にはそれほど大きな違いはない点に注意してください。おもな違いは以下の通りです:

  • C#, Java, Javascript, ActionScript, Visual Basic (.net), Lua では、数学関数の前に接頭辞 “Math” が付きます。
  • C / C++ と VBA では、数学関数に接頭辞は付きません。

いずれの言語にも関数を呼び出す固有の方法があります。関数からベクトルを返す場合は、言語によって挙動が異なります。

  • C では、ベクトルの x 座標と y 座標をあらわす double 型のポインタが関数に渡されます。
  • C++, Visual Basic, VBA では、ベクトルの x 座標と y 座標をあらわす double 型の参照が関数に渡されます。
  • C# では、 ベクトルの x 座標と y 座標をあらわす double 型の out パラメータが使用されます。
  • Java, JavaScript, ActionScript では、配列が関数に渡されます。0 番目と 1 番目の配列要素にベクトルの x 座標と y 座標が入ります。

ソースコードを生成する
   ┗ ソースコードのサンプル

以下のサンプルを元に、コード生成で得られる点 D の位置 (ベクトル) と AD の距離(スカラー) をあらわす数式をコピーすることにします。

スカラー / 中間変数なし

  • distance の数式を選択します。
  • 右クリックして、形式を指定してコピー > ソースコード > C/Objective C を選択します。
  • このコードで単式が生成されます (生成された C コード):
(pow((pow(c,2)+((a+(b*-1))*c)),0.5)*pow((a+b+c),-0.5)*pow(a,0.5))
 

スカラー / 中間変数

  • 中間変数を使うと distance の数式は以下のようになります:
double distance(
double a ,
double b ,
double c )
{
double d_1;
double v_1;
double phi_0;
double d_2;
double d_0;
double u_1;
d_1 =
(pow(((a*-1)+b+c),0.5)*pow((a+(b*-1)+c),0.5)*pow((a+b+(c*-1)),0.5)
*pow((a+b+c),0.5));
v_1 = (d_1*pow(a,-1)*0.5);
phi_0 = ((a+b+c)*v_1*pow(c,-1)*pow(b,-1));
d_2 = (v_1*pow(b,-1)*a*-1);
d_0 = (pow(a,2)+(pow(b,2)*-1)+pow(c,2));
u_1 = (d_0*pow(a,-1)*0.5);
return
(pow(fabs(phi_0),-1)*fabs(d_2)*pow((pow(c,2)+(u_1*c*2)+pow(u_1,2)+
pow(v_1,2)),0.5)*pow(c,-1));
}

関数の名称が Geometry Expressions における数式の名称になっており、そのパラメータは入力変数、戻り値は数式の値になっていることが分かります。

 

ベクトル / 中間変数

ベクトル値からなる location の数式を選択すると、関数は2つの量を返します。これは言語によって異なる方法で実行されます。

 

C / Objective C

  • double 型のポインタが関数に渡されます:
void location(
double a ,
double b ,
double c ,
double *location_x_ ,
double *location_y_ )
{
double location_x;
double location_y;
double d_1;
double v_1;
double d_2;
double d_0;
double u_1;
double phi_0;
d_1 =
(pow(((a*-1)+b+c),0.5)*pow((a+(b*-1)+c),0.5)*pow((a+b+(c*-1)),0.
5)*pow((a+b+c),0.5));
v_1 = (d_1*pow(a,-1)*0.5);
d_2 = (v_1*pow(b,-1)*a*-1);
d_0 = (pow(a,2)+(pow(b,2)*-1)+pow(c,2));
u_1 = (d_0*pow(a,-1)*0.5);
phi_0 = ((a+b+c)*v_1*pow(c,-1)*pow(b,-1));
location_x = (((d_2*-1)+(u_1*d_2*pow(c,-1)*-1))*pow(phi_0,-1));
location_y = (pow(phi_0,-1)*v_1*d_2*pow(c,-1)*-1);
*location_x_ = location_x;
*location_y_ = location_y;
}
 

C++

  • 参照が関数に渡されます:
void location(
double a ,
double b ,
double c ,
double &location_x_ ,
double &location_y_ )
{
double location_x;
double location_y;
...
location_x_ = location_x;
location_y_ = location_y;
}
 

C Sharp

  • out パラメータが関数に渡されます:
void location(
double a ,
double b ,
double c ,
out double location_x_ ,
out double location_y_ )
{
double location_x;
double location_y;
...
location_x_ = location_x;
location_y_ = location_y;
}
 

Visual Basic / VBA

  • 参照が関数に渡されます:
Sub z_0(ByVal a As Double , ByVal b As Double , ByVal c As Double ,
ByRef z_0_x_ As Double ,ByRef z_0_y_ As Double )
Dim z_0_x As Double
Dim z_0_y As Double

z_0_x_ = z_0_x
z_0_y_ = z_0_y
End Sub
 

Java

  • double 型のサイズ 2 の配列が関数によって渡され投入されます:
double location(
double a ,
double b ,
double c ,
double[] location_v )
{
double location(
double a ,
double b ,
double c ,
double[] location_v )
{
double location_x = 0;
double location_y = 0;
...
location_v[0] = location_x;
location_v[1] = location_y;
}
 

JavaScript

  • 配列が関数によって渡され投入されます:
function location(
a ,
b ,
c ,
location_v )
{
var location_x = 0;
var location_y = 0;
...
location_v[0] = location_x;
location_v[1] = location_y;
}
 

Action Script

  • 配列が関数によって渡され投入されます:
public function location(
a:Number ,
b:Number ,
c:Number ,
location_v:Array) )
:void
{
var location_x:Number;
var location_y:Number;

location_v[0] = location_x;
location_v[1] = location_y;
}