N88-BASICで楕円 (1回目)

2021/10/22(金)
N88-BASICで楕円 (1回目)
 
極座標系の楕円の式は
https://ulprojectmail.blogspot.com/2021/09/2.html
三角関数 (2回目)
を参照して下さい

極座標系と直交座標系の変換
極座標系⇒直交座標系は、
x = rcosθ (cosθ = x / rより)
y = rsinθ (sinθ = y / rより)
直交座標系⇒極座標系は、
r = √(x2 + y2)
θ= Tan-1(y/x)
 
直交座標系の円
x = rcosθ
y = rsinθ
より
x2+y2 = r2(cos2θ+sin2θ)
x2+y2 = r2 … 原点からの距離がrの点の集合
 
直交座標系の楕円
長半径a,短半径bの楕円は
半径aの円をy軸方向にb/a倍に伸ばした
形y = (b/a)asinθ = bsinθとなるので
x = acosθ
y = bsinθ
となり
x/a = cosθ
y/b = sinθ
(x/a)2+(y/b)2 = cos2θ+sin2θ
x2/a2 + y2/b2 = 1
となる
この楕円の式を
(Re x, Re y, Im y)座標で描画する
 
楕円の式
x2/a2 + y2/b2 = 1
より
x2 = a2 - (a2/b2)y2 
x2 = (b2/b2)a2 - (a2/b2)y2 
x = ±(a/b)√(b2 - y2)
 
y = R+Iiと置くと
x = ±(a/b)√(b2 - y2)
= ±(a/b)√{b2 - (R + Ii)2}
= ±(a/b)√{b2 - (R2 - I2 + 2RIi)}
= ±(a/b)√{b2 - R2 + I2 - 2RIi}
 
√(X+Yi)を計算する
r = √(X2+Y2), θ=Tan-1(Y/X)
X+Yi = r(cosθ + isinθ)
√(X+Yi) = r1/2(cosθ + isinθ)1/2 
= r1/2(cos(θ/2) + isin(θ/2))
詳しくは
https://ulprojectmail.blogspot.com/2021/10/n88-basicn-3.html
N88-BASICでn乗の解 (3回目)
を参照して下さい
 
X = b2 - R2 + I2 , Y = -2RI
r = √(X2 + Y2), d = (a/b)√r
t = Tan-1(Y/X)
x = ±(a/b)√{X + Yi}
= ±d(cos(t/2) + isin(t/2))
Re x = ±dcos(t/2), Im x = ±idsin(t/2)
となる
このまま、描画しても良いのですが
三角関数を使わない形に変形すると
 
Z = √{X + Yi}
= √√(X2 + Y2)(cos(t/2) + isin(t/2))
Re Z = √√(X2 + Y2)cos(t/2)
Im Z = √√(X2 + Y2)sin(t/2)
Re x = ±(a/b)Re Z
Im x = ±(a/b)Im Z
 
tanθ = sinθ/cosθ
tan2θ = (1-cos2θ)/cos2θ = 1/cos2θ-1
cos2θ = 1/(1+tan2θ)
 
1-cos2θ = 1-1/(1+tan2θ)
= tan2θ/(1+tan2θ)
1/(1+cosθ) = 1/{1 + 1/√(1+tan2θ)}
= √(1+tan2θ)/{1+√(1+tan2θ)}
 
sin2(θ/2) = (1 - cosθ)/2
cos2(θ/2) = (1 + cosθ)/2
tan2(θ/2) = (1 - cosθ)/(1 + cosθ)
= (1 - cos2θ)/(1 + cosθ)2 
= {tan2θ/(1+tan2θ)}[√(1+tan2θ)/{1+√(1+tan2θ)}]2 
= tan2θ/{1+√(1+tan2θ)}2 
tan(θ/2) = tanθ/{1+√(1+tan2θ)}
x = tanθ, θ = Tan-1(x)
tan(θ/2) = x/{1+√(1+x2)}
Tan-1{tan(θ/2)} = Tan-1[x/{1+√(1+x2)}]
θ/2 = Tan-1[x/{1+√(1+x2)}]
θ = 2Tan-1[x/{1+√(1+x2)}]
Tan-1(x) = 2Tan-1[x/{1+√(1+x2)}]
 
y = tan{Tan-1(x)/2}
Tan-1(y) = Tan-1(x)/2
Tan-1(x) = 2Tan-1(y)
y = x/{1+√(1+x2)}
= x{1-√(1+x2)}/{1-(1+x2)}
= x{√(1+x2)-1}/x2 
= {√(1+x2)-1}/x
1+tan2(Tan-1(x)/2)
= [x2+{√(1+x2)-1}2]/x2 
= {x2+(1+x2)+1-2√(1+x2)}/x2 
= 2{x2+1-√(1+x2)}/x2 
1/[1+tan2{Tan-1(x)/2}]
= x2/[2{x2+1-√(1+x2)}]
= x2{x2+1+√(1+x2)}/[2{(x2+1)2-(1+x2)}]
= x2{x2+1+√(1+x2)}/{2(x4+1+2x2-1-x2)}
= x2{x2+1+√(1+x2)}/{2(x4+x2)}
= {x2+1+√(x2+1)}/{2(x2+1)}
= [1+√{1/(x2+1)}]/2
 
√{X + Yi}
= √√(X2 + Y2)(cos(t/2) + isin(t/2))
 
cos2(t/2) = 1/(1+tan2(t/2))
= 1/(1+tan2(Tan-1(Y/X)/2))
= [1+√{1/((Y/X)2+1)}]/2
= [1+√[1/{(Y2+X2)/X2}]]/2
= [1+√{X2/(Y2+X2)}]/2
= [1+X/√(Y2+X2)}]/2
= {X+√(Y2+X2)}/{2√(Y2+X2)}
= {(Y2+X2)+X√(Y2+X2)}/{2(Y2+X2)}
 
sin2θ = tan2θcos2θ = tan2θ/(1+tan2θ)
= tan2(Tan-1(Y/X)/2)/(1+tan2(Tan-1(Y/X)/2))
 
√(X2+Y2)cos2(t/2)
= √(X2+Y2){(Y2+X2)+X√(Y2+X2)}/{2(Y2+X2)}
= {X(Y2+X2)+(Y2+X2)√(Y2+X2)}/{2(Y2+X2)}
= {X+√(Y2+X2)}/2
√(X2+Y2)sin2(t/2)
=√(X2+Y2){1-cos2(t/2)}
=√(X2+Y2)-√(X2+Y2)cos2(t/2)
= √(X2+Y2)-{X+√(Y2+X2)}/2
= [2√(X2+Y2)-X-√(Y2+X2)}]/2
= {-X+√(Y2+X2)}/2
 
Z = √(X±|Y|i)
= √[{X+√(X2+Y2)}/2]±√[{-X+√(X2+Y2)}/2]i
 
まとめ
x2/a2 + y2/b2 = 1よりx = ±(a/b)√(b2 - y2)
y = R+Ii, X = b2 - R2 + I2 , Y = -2RI
Re x = ±(a/b)Re Z = ±(a/b)√[{X+√(X2+Y2)}/2]
Im x = ±(a/b)Im Z = ±s(a/b)√[{-X+√(X2+Y2)}/2]
s = -1 (if Y < 0), s = 1 (if Y > 0)
 
グラフを表示した結果
(Re x, Re y)座標に楕円 (白い線)
(Re x, Im y)座標に双曲線(白い線)
が現れています
これは
x2/a2 + y2/b2 = 1がyが実数なら楕円
純虚数なら双曲線を表すことを示しています
(Im yを軸に左右の双曲線になる)
 
つまりx,yを実数とすると
x2/a2 + y2/b2 = 1は楕円
x2/a2 - y2/b2 = 1はy軸に対して左右の双曲線
-x2/a2 + y2/b2 = 1はx軸に対して上下の双曲線
になります
放物線はどこかに行ってしまった様です
 
x2/a2 + y2/b2 = 1のグラフを
(Re x黄, Re y紫, Im y赤)座標に
描画しています
 
NL-BASICとblg~.zip(elli001.bas)は
このブログ(以下のリンク)から
ダウンロードできます

https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい
 









このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)