2012-10-04 41 views
7

Tôi có một tập hợp các điểm lưới 2d (x, y) mà tôi muốn ánh xạ/chiếu lên một hình cầu như 3d điểm (x, y, z).cách các điểm lưới 2d bản đồ (x, y) lên hình cầu như các điểm 3d (x, y, z)

Tôi nhận thấy sẽ có một số cong vênh về cực khi tăng (y) nhưng bản vá lưới của tôi chỉ bao phủ một phần của quả cầu gần đường xích đạo để tránh vênh vênh nghiêm trọng.

Tôi đang gặp khó khăn khi tìm phương trình phù hợp cho điều đó.

+0

Tôi không chắc chắn những gì bạn đang yêu cầu ở đây ... 2D 'x' và' y' là gì? Chúng có phải là vĩ độ/kinh độ hay tọa độ trên một số phép chiếu hình chữ nhật phẳng của hình cầu không? Trong trường hợp cuối cùng, bạn đang sử dụng phép chiếu nào? –

Trả lời

16

diễn giải từ các bài viết trên wikipedia Mercator chiếu:

Given a "mapping sphere" of radius R, 
the Mercator projection (x,y) of a given latitude and longitude is: 
    x = R * longitude 
    y = R * log(tan((latitude + pi/2)/2)) 

and the inverse mapping of a given map location (x,y) is: 
    longitude = x/R 
    latitude = 2 * atan(exp(y/R)) - pi/2 

Để có được 3D phối từ kết quả của ánh xạ nghịch đảo:

Given longitude and latitude on a sphere of radius S, 
the 3D coordinates P = (P.x, P.y, P.z) are: 
    P.x = S * cos(latitude) * cos(longitude) 
    P.y = S * cos(latitude) * sin(longitude) 
    P.z = S * sin(latitude) 

(Lưu ý rằng "bán kính bản đồ "và" bán kính 3D "gần như chắc chắn sẽ có các giá trị khác nhau, vì vậy tôi đã sử dụng các tên biến khác nhau.)

+0

Vĩ độ của tôi là 29.65163. Khi tôi cố gắng tính toán giá trị y, tôi nhận được một lỗi (bằng Python) vì 'tan ((vĩ độ + pi/2)/2)' là -0.0970531183, và thực hiện đăng nhập trên giá trị đó tạo ra một lỗi "toán miền "vì giá trị là âm. Tôi đang làm gì sai? – Pikamander2

+0

Bạn cần chuyển đổi vĩ độ của bạn từ độ sang radian, trước khi thêm 'pi/2'. Điều này sẽ chuyển đổi phạm vi '+/- 90 độ' thành một dải' +/- pi/2 radian', mà sẽ không làm tràn phạm vi chức năng trừ khi bạn đang ở cực (trong trường hợp đó phép chiếu Mercator là số ít. ..) – comingstorm

1

Tôi hy vọng rằng bạn có thể sử dụng nghịch đảo của bất kỳ số dự báo toàn cầu nào.

Mercator khá tốt xung quanh đường xích đạo so với các phép chiếu khác.

Công thức có trên trang wiki.
http://en.wikipedia.org/wiki/Mercator_projection

+0

cảm ơn. tôi nhận ra rằng đó là những gì tôi muốn nhưng tôi gặp khó khăn khi phát sinh các phương trình để lấy điểm 2d (x, y) đến điểm 3d (x, y, z) trên hình cầu. – milkplus

+0

Ah, công thức thực tế. Đây là một hoạt động toán học không tầm thường, và bạn có thể có may mắn hơn trên http://math.stackexchange.com/. Khi bạn nhận được công thức, bạn có thể quay lại đây để được trợ giúp lập trình nó. Ngoài ra, http://wiki.openstreetmap.org/wiki/Mercator – kreativitea

Các vấn đề liên quan