Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
alex_afa
0 / 0 / 0
Регистрация: 24.01.2016
Сообщений: 7
#1

Перевести координаты из сферической системы в прямоугольную для 3D Blender

24.01.2016, 23:05. Просмотров 350. Ответов 4
Метки нет (Все метки)

Уважаемые знатоки-питонисты,

очень нужна ваша помощь в написании/проверке одного скрипта.

Дано:
файл с данными, которые симулируют астрономический феномен (рождение планеты). В нем заданы размеры координатной сетки X*Y*Z, координаты планеты в стадии зачатия и координаты частиц, из которых из которых эта планета формируется. Все выглядит как диск.

Надо:
визуализировать этот феномен.

Мое решение:
3D программа Blender. Для этого мне надо сначала перевести координаты из сферической системы в прямоугольную. Потом новым скриптом я смогу прочитать и визуализировать их в Blender.

Скрипт есть, но в нем какая-то ошибка, так как диск получается не полностью замкнутый.


Кто мне может посмотреть, подсказать, посоветовать?

Буду благодарна за любую помощь!

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2016, 23:05
Ответы с готовыми решениями:

Код, созданный в Maple, перевести в Blender
Добрый день! У меня такая ситуация: Научный руководитель поставил задачу...

Из прямоугольной системы координат в прямоугольную
Задание. Составить программу пересчета измерений РЛС в единую прямоугольную...

Перевести 3d координаты объекта в 2d координаты экрана на VB.vet
Подскажите пожалуйста может у кого есть код на vb.net, мне нужно перевести 3d...

Метод Гаусса для решения системы уравнений. Перевести с Pascal
Прошу помощи. Нашёл код в интернете, попробовал написать его на java. Но дело...

Каким давлениям отвечает вакуум для воздуха в сферической емкости?
Каким давлениям отвечает вакуум для воздуха в сферической емкости диаметра 10...

4
Marinero
Модератор
Эксперт NIX
2027 / 1643 / 560
Регистрация: 02.03.2015
Сообщений: 5,363
24.01.2016, 23:18 #2
Цитата Сообщение от alex_afa Посмотреть сообщение
Скрипт есть, но в нем какая-то ошибка
Так нечего делать! А еще мы можем наложением рук на кабель чистить системы от вирусов…
Скрипт где?
1
alex925
24.01.2016, 23:29
  #3

Не по теме:

Цитата Сообщение от Marinero Посмотреть сообщение
А еще мы можем наложением рук на кабель чистить системы от вирусов…
ахах :D

0
alex_afa
0 / 0 / 0
Регистрация: 24.01.2016
Сообщений: 7
24.01.2016, 23:44  [ТС] #4
Сразу уточню, что в питоне я новичок. Поэтому задание представляет для меня некоторую сложность.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import numpy as np
import matplotlib.pyplot as plt
 
 
# some "fix wired" information from input file
nI = 100
nJ = 101
nK = 189
n = nI * nJ * nK
 
# define grid data arrays
r = np.zeros( nI )                 # radius
theta = np.zeros( nJ )             # polar angle
phi = np.zeros( nK  )              # azimuth angle
D = np.zeros( ( nI, nJ, nK ) )     # density
T = np.zeros( ( nI, nJ, nK ) )     # temperature 
 
# read data from input file
file = open( "PLANET3DP.MWC_10Jup.DATA", "r" )
text = file.readlines()
file.close()
i = 0
for line in text:
    if( line.find( "Grid: radial" ) > -1 ):
        I1 = i + 2
    if( line.find( "Grid: polar" ) > -1 ):
        J1 = i + 2
    if( line.find( "Grid: azimuthal" ) > -1 ):
        K1 = i + 2
    if ( line.find( "Data:" ) > -1 ):
        data1 = i + 1
    i = i + 1
for I in range( 0, nI ):
    w = text[ I1 + I ].split()
    r[ I ] = float( w[ 1 ] )
#print( r )
for J in range( 0, nJ ):
    w = text[ J1 + J ].split()
    theta[ J ] = float( w[ 1 ] )
#print( theta )
for K in range( 0, nK ):
    w = text[ K1 + K ].split()
    phi[ K ] = float( w[ 1 ] )
#print( phi )
for i in range( 0, n ):
    w = text[ data1 + i ].split()
    I = int( w[ 0 ] ) - 1
    J = int( w[ 1 ] ) - 1
    K = int( w[ 2 ] ) - 1
    D[ I, J, K ] = float( w[ 3 ] )
    T[ I, J, K ] = float( w[ 4 ] )
 
#plot density distribution for a fix polar angle slice
X = np.zeros( ( nI, nK ) )
Y = np.zeros( ( nI, nK ) )
for I in range( 0, nI ):
    for K in range( 0, nK ):
        X[ I, K ] = r[ I ] * np.sin( phi[ K ] )
        Y[ I, K ] = r[ I ] * np.cos( phi[ K ] )
Z = T[ :, 10, : ]
plt.contourf( X, Y, Z )
plt.show()
 
#x = np.zeros( ( nI, nJ, nK ) )     # karthesian x coordinate 
#y = np.zeros( ( nI, nJ, nK ) )     # karthesian y coordinate 
#z = np.zeros( ( nI, nJ, nK ) )     # karthesian z coordinate
Спасибо.
0
Вложения
Тип файла: zip PLANET3DP.DATA.ZIP (2.89 Мб, 1 просмотров)
alex_afa
0 / 0 / 0
Регистрация: 24.01.2016
Сообщений: 7
25.01.2016, 00:06  [ТС] #5
В строках 6,7,8 и 19 значения других данных симуляции.

Должно быть:

Python
6
7
8
nI = 50
nJ = 31
nK = 89
Python
19
file = open( "PLANET3DP.DATA", "r" )
0
25.01.2016, 00:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2016, 00:06

Перевести целые числа из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную системы
Помогите пожалуйста Перевести целые числа из десятичной системы счисления в...

Python. Создание аддона для Blender
При создании плагина нужна триангуляция Делоне, подключила бибилотеку Scipy, в...

Сборка пк для 3д графики (blender) бюджет
Нужна сборка пк для 3д графики. Работаю в blender. Хочется собрать пк самому,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru