Построение точки на краю сферы - PullRequest
24 голосов
/ 09 июня 2009

Итак, исходя из фона вспышки, я хорошо понимаю некоторые простые 2D-триггеры. В 2d с кругом I я знаю математику для размещения элемента на ребре с заданным углом и радиусом.

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

Теперь, если у меня есть точка в трехмерном пространстве, я знаю радиус своей сферы, знаю угол, который я хочу расположить вокруг оси z, и угол, который я хочу расположить вокруг, скажем, оси y. Что такое математика, чтобы найти координаты x, y и z в моем трехмерном пространстве (предположим, что мой источник равен 0,0,0)? Я бы подумал, что смогу позаимствовать математику из круга, но не могу найти решение.

Ответы [ 2 ]

66 голосов
/ 09 июня 2009

Ваша позиция в 3d определяется двумя углами (+ радиус, который в вашем случае постоянен)

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

здесь, s - это угол вокруг оси z, а t - это угол высота , измеренный «вниз» от оси z.

На рисунке ниже показано, что представляют углы, s = тета в диапазоне от 0 до 2 * PI в плоскости xy и t = phi в диапазоне от 0 до PI.

enter image description here

0 голосов
/ 29 апреля 2018

Принятый ответ, по-видимому, не поддерживает отрицательные значения x (возможно, я сделал что-то не так), но на всякий случай, используя нотацию из соглашения ISO о системах координат, определенных в этой записи Википедии , этой системе уравнения должны работать:

import math

x = radius * sin(theta) * cos(phi)
y = radius * sin(theta) * sin(phi)
z = radius * cos(theta)

radius = math.sqrt(math.pow(x, 2) + math.pow(y, 2) + math.pow(z, 2))

phi = math.atan2(y, x)
theta = math.acos((z / radius))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...