Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Need хeлп, сфера
СообщениеДобавлено: 14 янв 2022, 17:06 
Не в сети
Начинающий
Зарегистрирован:
14 янв 2022, 16:56
Сообщений: 8
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Здравствуйте уважаемые гуру. Помогите пожалуйста новичку. Сломал весь моск напрочь
моя проблема состоит вот в чем:

Имеется 3d пространство с системой координат x, y, z
в котором нужно отобразить сферу.

все формулы которые я пробовал, вместо сферы отображают какие то гиперболоиды и др. фигуры.

Задача такова:

Нужна формула, по которой будет вычисляться множество точек(сегментов) поверхности сферы

каждый сегмент имеет свои координаты x y z

из имеющихся вводных есть:
R(радиус), Xo, Yo, Zo центра сферы и Q - количество сегментов

параметрическое уравнение
L = множество от 0 до 3.14
F = множество от 0 до 3.14 *2
#x = xo + R * sin_L * cos_F
#y = yo + R * sin_L * sin_F
#z = zo + R * cos_L
почему то не получилось применить...вместо сферы получилось вот это:
Изображение

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 14 янв 2022, 17:28 
Не в сети
Последняя инстанция
Зарегистрирован:
06 июн 2013, 16:17
Сообщений: 2590
Cпасибо сказано: 104
Спасибо получено:
746 раз в 701 сообщениях
Очков репутации: 158

Добавить очки репутацииУменьшить очки репутации
Параметрические уравнения сферы можно получить из формул перехода от сферических к декартовым координатам.

[math]{\begin{cases}x=r\sin \theta \cos \varphi ,\\y=r\sin \theta \sin \varphi ,\\z=r\cos \theta .\end{cases}}[/math]

Здесь [math]\theta[/math] пробегает по множеству [math]L=[0,\pi][/math], а [math]\varphi[/math] — по множеству [math]F=[0,2\pi)[/math]. Переменная [math]r[/math] является константой.

Эти формулы описывают сферу с центром в начале координат. Если центр другой, то нужно действительно добавить [math]x_0[/math], [math]y_0[/math] и [math]z_0[/math]. По-моему, ваши формулы правильные, если под [math]\sin_L[/math] иметь в виду [math]\sin\theta[/math], где [math]\theta[/math] пробегает по [math]L[/math].

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю 3D Homer "Спасибо" сказали:
Juhen
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 14 янв 2022, 18:14 
Не в сети
Начинающий
Зарегистрирован:
14 янв 2022, 16:56
Сообщений: 8
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Спасибо за помощь ) Так и есть, именно это и подразумевалось. L и F это действительно эти множества...но почему то всёравно получается трактор...наверное в коде ошибка...попробую переписать его еще раз

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 14 янв 2022, 18:30 
Не в сети
Начинающий
Зарегистрирован:
14 янв 2022, 16:56
Сообщений: 8
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Я кажется понял в чем подвох...
Скажите пожалуйста:
{\begin{cases}x=r\sin \theta \cos \varphi ,\\y=r\sin \theta \sin \varphi ,\\z=r\cos \theta .\end{cases}}

в данном случае у нас получается что количество элементов X = Y но НЕ равно Z
так как множество θ(L) количественно меньше чем множество φ (F)
А если учитывать что все точки, допустим их 1000 имеют каждая по 3 координаты (x, y, z)
то такое положение вещей не допустимо. Или допустимо с учётом, что на одну координату z приходится несколько разных координат x y
если мое второе предположение верно - то как определить этот момент ? на какие из z приходятся какие x y

пс. X и Y можно синхронизировать, так как они образуют одинаковые по длинне списки....а вот список Z нужно как то изменить, что бы его длинна соответствовала XY...например
дублировать координаты....только вот как узнать - какие из них должны дублироваться и сколько раз ??)))

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 14 янв 2022, 22:33 
Не в сети
Последняя инстанция
Зарегистрирован:
06 июн 2013, 16:17
Сообщений: 2590
Cпасибо сказано: 104
Спасибо получено:
746 раз в 701 сообщениях
Очков репутации: 158

Добавить очки репутацииУменьшить очки репутации
Juhen писал(а):
в данном случае у нас получается что количество элементов X = Y но НЕ равно Z
так как множество θ(L) количественно меньше чем множество φ (F)
Я не понимаю этого, начиная с того, что такое "количество элементов X = Y", ведь X — это не множество (вообще, X не было определено ранее) и у него нет элементов.

Для каждой пары [math](\theta,\varphi)[/math] вычисляется один набор [math](x,y,z)[/math]. Поэтому число найденных значений [math]x[/math] и найденных значений [math]z[/math] не может быть разным.

Я бы сделал вложенные циклы
float thetaStep = pi / n;
float phiStep = 2 * pi / m;
for (theta = 0; theta <= pi; theta += thetaStep)
for (phi = 0; phi < 2*pi; phi += phiStep) {
вычислить x, y, z по theta, phi;
plot(x, y, z);
}

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю 3D Homer "Спасибо" сказали:
Juhen
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 15 янв 2022, 10:27 
Не в сети
Начинающий
Зарегистрирован:
14 янв 2022, 16:56
Сообщений: 8
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
3D Homer писал(а):
Juhen писал(а):
в данном случае у нас получается что количество элементов X = Y но НЕ равно Z
так как множество θ(L) количественно меньше чем множество φ (F)
Я не понимаю этого, начиная с того, что такое "количество элементов X = Y", ведь X — это не множество (вообще, X не было определено ранее) и у него нет элементов.

Для каждой пары [math](\theta,\varphi)[/math] вычисляется один набор [math](x,y,z)[/math]. Поэтому число найденных значений [math]x[/math] и найденных значений [math]z[/math] не может быть разным.

Я бы сделал вложенные циклы
float thetaStep = pi / n;
float phiStep = 2 * pi / m;
for (theta = 0; theta <= pi; theta += thetaStep)
for (phi = 0; phi < 2*pi; phi += phiStep) {
вычислить x, y, z по theta, phi;
plot(x, y, z);
}


Большое спасибо за помощь :) Я наверное слишком туп, что бы сразу увидеть логичное решение, и зачем то начал перебирать все значения в отдельности и пытаться их потом совместить ))) Естественно результат получился полной фигнёй. Но вашу мысль я уловил и понял где ошибался ) Еще раз спасибо, приду вечером домой - буду пробовать ))
А скажите пожалуйста - /n и /m в вашем коде - что это за переменные ?
По мимо того, что я хреновый математик я еще и хреновый(начинающий( программист )) По этому мне тяжеловато дается сходу понять что имелось ввиду :)

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 16 янв 2022, 01:46 
Не в сети
Последняя инстанция
Зарегистрирован:
06 июн 2013, 16:17
Сообщений: 2590
Cпасибо сказано: 104
Спасибо получено:
746 раз в 701 сообщениях
Очков репутации: 158

Добавить очки репутацииУменьшить очки репутации
Juhen писал(а):
А скажите пожалуйста - /n и /m в вашем коде - что это за переменные ?
Это количество частей, на которые разбиваются интервалы [math]L=[0,\pi][/math] и [math]F=[0,2\pi)[/math]. Например, можно положить n = 100 и m = 200. Правда, при этом распределение точек на сфере будет неравномерным. У полюсов точки будут расположены более густо. Здесь говорится, что равномерное распределение можно получить, если переменные [math]u[/math] и [math]v[/math] пробегают интервал [math](0,1)[/math] (опять можно сделать вложенные циклы), по ним вычисляется [math]\varphi=2\pi u[/math] и [math]\theta=\arccos(2v-1)[/math], а уже по ним вычисляются [math]x,y,z[/math].

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю 3D Homer "Спасибо" сказали:
Juhen
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 16 янв 2022, 15:26 
Не в сети
Начинающий
Зарегистрирован:
14 янв 2022, 16:56
Сообщений: 8
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
3D Homer писал(а):
Juhen писал(а):
А скажите пожалуйста - /n и /m в вашем коде - что это за переменные ?
Это количество частей, на которые разбиваются интервалы [math]L=[0,\pi][/math] и [math]F=[0,2\pi)[/math]. Например, можно положить n = 100 и m = 200. Правда, при этом распределение точек на сфере будет неравномерным. У полюсов точки будут расположены более густо. Здесь говорится, что равномерное распределение можно получить, если переменные [math]u[/math] и [math]v[/math] пробегают интервал [math](0,1)[/math] (опять можно сделать вложенные циклы), по ним вычисляется [math]\varphi=2\pi u[/math] и [math]\theta=\arccos(2v-1)[/math], а уже по ним вычисляются [math]x,y,z[/math].


Спасибо за развернутый ответ :) Думаю что это поможет мне в дальнейшем сделать сферу более равномерной...но пока что у меня всё никак не получается её построить :(
что то наверное я делаю не так.
Если вас не затруднит - посмотрите пожалуйста, может что бросится в глаза где я ошибся...

********************************************************************************
import numpy as np

n = 30 # количество частей по ширине
m = 15 # количество частей по высоте
r = 5 # радиус сферы

pi = 3141592 # берём пи целым числом, так как дробный рейнж не возможен, в цикле вернем его к виду дроби

cor = list()

teta_step = 3141592 // n # получаем шаг для цикла тета
phi_step = (3141592*2) // m # получаем шаг для цикла фи

for i in range(0, pi, teta_step): # для элементов множества тета с шагом тета_степ
i = i/1000000 #это тэта которая вернулась к виду дроби
#print(i)
for j in range(0, pi *2, phi_step): # для элементов множества фи с шагом фи_степ
j = j/1000000 #это фи которая вернулась к виду дроби

x = r * np.sin(i) * np.cos(j)
y = r * np.sin(i) * np.sin(j)
z = r * np.cos(j)
cor.append((x, y, z, 1)) # на каждом проходе получаем объект (x, y, z, 1) и добавляем
## его в лист
#print(cor.shape)
print(cor) # проверим состав листа с координатами

tocki_s = cor # отправляем лист на отрисовку


*******************************************************************************

вот результат данного кода...мне кажется или это не совсем похоже на сферу ? )) Что то делаю не так - а вот что - не пойму никак :(

ссылка на видео того что получилось

https://youtu.be/3lWNcl6fd70

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 16 янв 2022, 17:47 
Не в сети
Начинающий
Зарегистрирован:
14 янв 2022, 16:56
Сообщений: 8
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
3D Homer

У меня получилось построить сферу :)
Почему то, формула указанная в википедии не работала

я подсмотрел формулу в коде plotli, и она отличалась от формулы википедии первой строчкой

x = r sinθ cosφ #так пишет вики

x = r cosθ sinφ #так было подсмотрено и так сфера построилась )

Большое спасибо за помощь ) Теперь по вашему второму совету - попробую сделать её более равномерной

https://youtu.be/cp24ozGZiYs

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Need хeлп, сфера
СообщениеДобавлено: 16 янв 2022, 19:14 
Не в сети
Начинающий
Зарегистрирован:
14 янв 2022, 16:56
Сообщений: 8
Cпасибо сказано: 3
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
3D Homer писал(а):
если переменные u и v пробегают интервал (0,1)
(опять можно сделать вложенные циклы),


Скажите пожалуйста, я правильно понял что u и v это множества от 0 до 1 с шагом....каким ?)

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему    На страницу 1, 2  След.  Страница 1 из 2 [ Сообщений: 11 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Сфера

в форуме Геометрия

Olga1975

2

278

11 апр 2016, 22:42

Куб и сфера

в форуме Геометрия

1805

16

991

19 май 2016, 00:41

Куб и сфера

в форуме Геометрия

1805

9

923

27 май 2016, 01:35

Пирамида и сфера

в форуме Геометрия

nicat

1

340

28 май 2016, 18:19

Шар.Сфера.Многоугольники

в форуме Геометрия

WorldWild

5

321

10 окт 2016, 08:48

Сфера и жидкость

в форуме Механика

PesVasy757

7

484

08 авг 2017, 12:27

Сфера Римана

в форуме Палата №6

ivashenko

12

1451

07 окт 2018, 11:43

Точки и сфера

в форуме Аналитическая геометрия и Векторная алгебра

psp

0

53

28 дек 2023, 00:05

Пирамида и сфера

в форуме Интересные задачи участников форума MHP

vvvv

22

640

17 фев 2024, 01:21

Сфера, шарик, магниты

в форуме Дискуссионные математические проблемы

tigra-migra

3

567

30 янв 2018, 12:54


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved