0

나는 구면에 여러 좌표 (EEG- 캡의 전극을 나타냄)를 가지고 있습니다. 저는 직교 좌표와 구 좌표에서 그들의 위치를 ​​가지고 있습니다.구의 좌표를 90도까지 회전하는 방법은 무엇입니까?

chan   X   Y  Z long lat sph_radius 
1 Fp1 8.08e+01 2.61e+01 -4.00 17.9 -2.70   85 
2 Fp2 8.08e+01 -2.61e+01 -4.00 -17.9 -2.70   85 
3 F3 5.76e+01 4.82e+01 39.90 39.9 28.00   85 
4 F4 5.76e+01 -4.81e+01 39.90 -39.9 28.00   85 
5 C3 3.87e-15 6.32e+01 56.90 90.0 42.00   85 
6 C4 3.87e-15 -6.32e+01 56.90 -90.0 42.00   85 
7 P3 -5.76e+01 4.82e+01 39.90 140.0 28.00   85 
8 P4 -5.76e+01 -4.81e+01 39.90 -140.0 28.00   85 
9 O1 -8.08e+01 2.61e+01 -4.00 162.0 -2.70   85 
10 O2 -8.08e+01 -2.61e+01 -4.00 -162.0 -2.70   85 
11 F7 4.99e+01 6.84e+01 -7.49 53.9 -5.06   85 
12 F8 4.99e+01 -6.84e+01 -7.49 -53.9 -5.05   85 
13 T3 5.18e-15 8.45e+01 -8.85 90.0 -5.97   85 
14 T4 5.18e-15 -8.45e+01 -8.85 -90.0 -5.97   85 
15 T5 -4.99e+01 6.84e+01 -7.49 126.0 -5.06   85 
16 T6 -4.99e+01 -6.84e+01 -7.49 -126.0 -5.05   85 
17 Fz 6.07e+01 0.00e+00 59.50 0.0 44.40   85 
18 Cz 5.20e-15 0.00e+00 85.00 0.0 90.00   85 
19 Pz -6.07e+01 -7.44e-15 59.50 -180.0 44.40   85 

(길이 = 0, 위도 = 90) 이제 그 전극 Cz가이 긴 (위도 = 0가되도록 I가 아래쪽으로 Z 축을/반 시계 방향으로 90 개도를 기준으로 모든 전극을 회전시킬 = 0). 회전을 데카르트 또는 구 좌표로 수행할지 여부는 상관하지 않습니다. 하나를 다른 것으로 쉽게 변환 할 수 있습니다.

이 사이트에서이 문제에 대한 해결책을 찾으려고했지만 모두 압도적이었습니다. 누군가가이 회전을 끝내기 위해 간단한 R 공식을 제공 할 수 있다면 정말 고맙겠습니다. 지점에서, 또는 북극에 가까운이 예기치 않게 작동 할 수 있습니다 :

+1

내가 당신의 회전이 제대로 정의 생각 적도 주위의 회전 지점의 위치에 큰 불확실성으로 확대됩니다 . 지구를 그림으로써 북극 (북극과 남극을 가로 지르는 z 축)을 가리킨다. 이 점을 90도 아래로 회전 시키려면 적도의 모든 점이 유효한 결과입니다. 더 나은 회전을 정의 할 수 있다면 [위키 피 디아의 3 차원 회전에 대한 페이지 섹션] (https://en.wikipedia.org/wiki/Rotation_matrix#In_three_dimensions)은 올바른 행렬을 곱하기 위해 공식화하는 데 도움이됩니다. – Gregor

+1

@dww 당신의 대답은 유용하다고 생각하지만, 아니에요. OP가 회전 할 축을 생각하지 않는다고 생각하지 않습니다. 예'(long = 0, late = 90) | -> (long = 0, lat = 0)'는 z 축에 직각으로 맵핑을 제안하지만 orthogonal * how *는 잘못 정의 된 것처럼 보입니다. – Gregor

+0

@ Gregor가 지적했듯이,이 회전은 나를 조금 혼란스럽게합니다. 먼저 참조 시스템을 정의하고 나머지는 더 쉬울 것입니다 : 일반적인 방법으로 "우리"는 지구를 생각하고, XY는 적도가있는 비행기, XZ는 그리니치 자오선이있는 비행기, X 축 위도와 경도가 모두 0 인 점을 포함합니다. 이 참조 시스템에서 Z 주위의 회전은 경도 (지구 회전 운동) 만 포함하고 Y 주위의 회전은 위도 (지구 경사) 만 포함하고 X 주위의 회전은 두 값을 모두 포함합니다. – marcoresk

답변

1

(data.table 표기) 그러나

# 1st we deal with cases where lat>0, 
# i.e. rotation does not entail passing through the south pole 
dt[, long.rot := long] # longitude stay in the same plane as we rotate 
dt[, lat.rot := lat-90] # latitude moves south 90 degrees 

# now we deal with case that were already in the southern hemisphere, 
# which will rotate through the south pole and northwards on the opposite longitude 
dt[lat < 0, long.rot := -sign(long)*(180-abs(long)) ] 
dt[lat < 0, lat.rot := 180+lat.rot ] 

, 경고의 단어 당신의 위도/경도 좌표를 사용하여. 엄밀히 말하면 극점의 경도는 정의되지 않으며 NA로 지정해야합니다. 이 경우 '회전 된'점이 적도상의 지정되지 않은 위치에있을 수 있으므로 회전 된 경도는 NA가됩니다.

극에 가까운 점을 들어

, 경도는 수학적으로 잘 정의되어 있지만, 위치의 작은 불확실성은

+0

나는 아직도 이것을 좋아하고 유용하다고 생각하지만 경고의 말을 더해야한다고 생각한다. 이것은 기존의 정의에 의한 회전이 아닙니다. 점 사이의 거리를 유지하지 않습니다 (북극 주위의 등 간격 점의 작은 원은 적도에 가까운 거대한 원에 매핑됩니다). 모든 점은에 매핑됩니다. 남반구. 그것은 여전히 ​​OP가 원하는 것일 수도 있지만 회전이 아닙니다. – Gregor

+0

감사합니다. @ 그레고르, 나는이주의 사항을 – dww