LoginSignup
1
1

More than 3 years have passed since last update.

【Rで球面幾何学】単位円と単位球②円周角(Circumference Angle)とは何か?

Last updated at Posted at 2020-04-04

とりあえず1次元(1D=One Dimension)の世界を「真円の円弧/真球の表面における任意の点(any point)Xが、原蹠(PorTal)として対蹠(AntiPordal)を検出出来てない状態」と規定します。

  1. ひょっとして、その任意の点は静止してないのでは?
  2. ひょっとして、その真円の円弧/真球の表面は静止してないのでは?

こうした疑念(Doubt)はとりあえず後回しとします。
【Rで球面幾何学】単位円と単位球①「半径1」と「直径2」の関係について。
20191028123539.gif
さて、円弧上の任意の点(any point)Xは、現在位置からどう観察したら対蹠(AntiPordal)を発見出来るでしょうか。ここで颯爽と登場してくるのが円周角(Circumference Angle)概念(Concept)という訳です。
20191111234734.gif

#SVXY=Survey ValueXY

SVXY<-function(SV){

c0<-seq(0,2*pi,length=60)
cx<-cos(c0)
cy<-sin(c0)
plot(cx,cy,type="l",asp=1,main="One Side:Survey Value X-Y dimension",xlab="cos(θ)",ylab="sin(θ)")
ifelse(SV<30,SVcol<-rgb(1,0,0),SVcol<-rgb(0,1,0))
text(cx[1],cy[1],"X",cex=2,col=SVcol)
segments(cx[1],cy[1],cx[SV],cy[SV],col=SVcol)
SVLength<-round(sqrt((cx[SV]-cx[1])^2+(cy[SV]-cy[1])^2)*pi,6)
SVtext<-paste0("Survey Value=",SVLength)

legend("bottomright", legend=SVtext,lty=1,col=SVcol)
}

library("animation")
Time_Code=seq(1,59,2)
saveGIF({
for (i in Time_Code){
SVXY(i)
}
}, interval = 0.1, movie.name = "SVXY.gif") 

①出発点はあくまでここ。
【初心者向け】「円そのもの」の近似から派生した角度と経度の概念の起源

そもそも「辺長が無限小(1/Inf)で辺数が無限大(Inf)」と規定される「円そのもの(Circle Itself)」の各頂点は中心からの垂線(Perpendicular)と直角に交わるとされているので、それぞれを含む水平線(Horizon)も引ける訳です。近似円概念直交座標系Rectangular Coordinate System / Orthogonal Coordinate System)に射影(Projiection)する際の基本。

②理論上、円周角に対応する検出距離(Detection distance)は(水平線に該当する)0度(-π/2ラジアン)時点の0から、(垂直線に該当する)90度(0ラジアン)時点における直径2を経て180度(π/2ラジアン)時点の0に至る推移を描く。とどのつまり検出距離の最大値が対蹠と想定可能なのである。

③これが検出出来たという事は、その真円の円弧における直径(Diameter)・半径(Radius)・中心(Origin)の確定に成功したも同然であり、さらなる検出次元引き上げが可能となるのである。
20191126211412.gif

#グローバル変数
DbNoS<-60 #分割辺数(Divided by the Number of Sides)
SVYZ<-function(SV){
#背景円
c0<-seq(0,2*pi,length=DbNoS)
cx<-cos(c0)
cy<-sin(c0)
plot(cx,cy,type="l",,xlim=c(-1,1),ylim=c(-1,1),main="One Side:Survey Value X-Y dimension",xlab="cos(θ)",ylab="sin(θ)")
par(new=T)#上書き指定
#円旋回準備
ifelse(SV>1,SVcol<-rgb(0,1,0),SVcol<-rgb(1,0,0))
ifelse(SV>1,cxp<-2-SV,cxp<-SV)
cx1<-cx*cxp+(1-cxp)
f0<-function(x)sqrt(1-x^2)
cy1<-cy*f0(1-cxp)*(0.70+(0.3*cxp))
#円旋回
plot(cx1,cy1,type="l",xlim=c(-1,1),ylim=c(-1,1),col=SVcol,main="One Side:Survey Value X-Y dimension",xlab="cos(θ)",ylab="sin(θ)")
#補足情報
text(cx[1],cy[1],"X",cex=2,col=SVcol)
text(cx[1]-cxp,cy[1],"X",cex=2,col=SVcol)
segments(cx[1],cy[1],cx[1]-cxp,cy[1],col=SVcol)
#円の塗り潰し
polygon(cx1, #x
cy1, #y
density=c(50*(1-cxp)), #塗りつぶす濃度
angle=c(45),     #塗りつぶす斜線の角度
col=SVcol)  #塗りつぶす色
#凡例
SVLength<-cxp*2*pi
SVtext<-paste0("Survey Value=",SVLength)
legend("bottomright", legend=SVtext,lty=1,col=SVcol)
}

library("animation")
Time_Code<-seq(0,2,length=DbNoS)
saveGIF({
for (i in Time_Code){
SVYZ(i)
}
}, interval = 0.1, movie.name = "SVYZ001.gif")

ちょっと待った、そんなに安易に検出距離(Detection distance)の最大値を直径(Diameter)と判断して良いものなの? そういう部分も含めて以下続報…

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1