2009-06-09 35 views
23

Vì vậy, đến từ một nền flash tôi có một sự hiểu biết OK của một số 2D trig đơn giản. Trong vòng 2ngày với vòng tròn I, tôi biết toán học để đặt một vật phẩm trên cạnh cho một góc và bán kính sử dụng.Vẽ một điểm trên cạnh của một quả cầu

x = cos(a) * r; 
y = sin(a) * r; 

Bây giờ nếu tôi có một điểm trong không gian 3d, tôi biết bán kính của mặt cầu của tôi, tôi biết góc tôi muốn vị trí của nó xung quanh trục z và góc tôi muốn vị trí của nó xung quanh, nói, trục y. Toán học để tìm tọa độ x, y và z trong không gian 3d của tôi là gì (giả sử rằng nguồn gốc của tôi là 0,0,0)? Tôi nghĩ tôi có thể mượn Toán từ vòng tròn nhưng tôi không thể tìm ra giải pháp.

Trả lời

58

Vị trí của bạn trong 3d được đưa ra bởi hai góc (+ bán kính, mà trong trường hợp của bạn là hằng số)

x = r * cos(s) * sin(t) 
y = r * sin(s) * sin(t) 
z = r * cos(t) 

đây, s là góc quanh trục z, và t là các chiều cao góc, đo 'xuống' từ trục z.

Các hình ảnh dưới đây cho thấy những gì các góc đại diện, s = theta trong khoảng từ 0 đến 2 * PI trong xy-máy bay, và t = phi trong khoảng từ 0 đến PI.

enter image description here

+5

Đừng quên rằng 's' và' t' cần phải bằng radian, * not * degrees. Để chuyển đổi sang radian: 'radians = angleInDegrees * Math.PI/180'. – Sam

+0

Nếu s = 45deg và t = 0deg, thì (x, y, z) = (0,0,1). Nhưng khi chúng tôi thực sự lập bản đồ, chúng tôi sẽ nhận được (0, 0,707, 0,707) phải không? x và y luôn cho zero khi t bằng 0 và z độc lập với s ...! Tôi nên làm gì để làm đúng? –

+0

Chúng ta không nên quét chính xác một vòng tròn với t bị khóa xuống 0 và các s khác nhau? Ở đây, nó không hoạt động như thế, khi t bằng không, bất kể giá trị của s, (x, y, z) luôn luôn là (0,0,1) –

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