Geometric OperatorsJ幾何学的演算幾何学的演算は、幾何の基本的な操作を演算として行うものです。それは、図形の要素や位置を表すベクトル(数のリスト)に適用されます。もし、演算子が図形の要素を返すならば、それをdraw演算子で描画することもできます。 リストと座標直線のための座標は常に同次座標です。すなわち、3つの数のリストで、 [a,b,c] が、方程式 ax+by+c=0 を表します。 点の座標はユークリッド座標(2つの数のリスト [x,y] ) か、 または同次座標 (3つの数のリスト [x,y,z] で点 [x/z,y/z] )を表す)です。戻り値は常に同次座標です。以下の説明の中では、特に断りなく、点の形式の引数は <point>で、直線の形式の引数は <line> で表します。<point> と <line> は両方とも3つの数のリストで表現することができるので、両者を区別する方法が必要になります。内部的には、リストは、それが幾何学的にどのような意味を持つのかというフラグを持っています。その情報は、 geotype(<list>) 演算子で得ることができます。この演算子は、 "Point" , "Line" , "None" のいずれかを返します。ベクトルが持つ幾何学的な意味に応じて、 draw 演算子は対応する図形を描きます。基本的な幾何学演算子2直線の交点:
|
perpendicular(<リスト>)
perp
演算子の引数が、2つの数からなるリスト1つだけとします。その場合は、リスト [a,b]
は [-b,a]
に変換されます。それは、もとのベクトルを 90° 回転したものです。area(<点1>,<点2>,<点3>)
det(<ベクトル1>,<ベクトル2>,<ベクトル3>)
<ベクトル1>
, <ベクトル2>
, <ベクトル3>
からなる 3 × 3 行列の行列式を計算します。ベクトルと行列 の節にある一般的な行列式と異なり、この方法はパフォーマンスが優れています。cross(<ベクトル1>,<ベクトル2>)
geotype(<リスト>)
"Point"
, "Line"
, "None"
のいずれかです。"Point"
を返します。3つの数からなるリストに適用した場合は、このリストの内部フラグによって "Point"
, "Line"
, or "None"
のいずれかを返します。シンデレラで描画した幾何オブジェクトであれば、常にそのフラグを有しています。 meet
演算子の戻り値は常に "Point" です。 join
, parallel
, perpendicular
演算子の戻り値は常に "Line"です。さらに、幾何学的意味は line
と point
演算子によって明確に設定することができます。point(<ベクトル>)
"Point"
として位置づけます。引数が3つの数からなるベクトルでなければ無効です。line(<ベクトル>)
"Line"
として位置づけます。引数が3つの数からなるベクトルでなければ無効です。complex(<点>)
[a,b]
は複素数 a+i*b
に変換されます。gauss(<点>)
a+i*b
を2つの数のリスト [a,b]
に変換しますcrossratio(<ベクトル>,<ベクトル>,<ベクトル>,<ベクトル>)
crossratio(<数>,< 数 >,< 数 >,< 数>)
linereflect(<直線>)
m=linereflect(a); draw(m*C.homog);
pointreflect(<点>)
<点>
に関する対称点を求める行列を返します。map(<点1>,<点2>)
map(<点1>,<点2>,<点3>,<点4>)
map(<点1>,<点2>,<点3>,<点4>,<点5>,<点6>)
map(<点1>,<点2>,<点3>,<点4>,<点5>,<点6>,<点7>,<点8>)
Contributors to this page: Akira Iritani
.
Page last modified on Wednesday 07 of March, 2012 [10:47:08 UTC] by Akira Iritani.
The content on this page is licensed under the terms of the License.