Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2009, 00:58   #1
Sergantes
Новичок
Джуниор
 
Аватар для Sergantes
 
Регистрация: 28.09.2009
Сообщений: 2
По умолчанию Построение сферы в Visual Basic.

Заранее прошу прощения, если данная тема уже существует (в поисковике вроде нет). Задача состоит в том, чтобы по точкам построить сферу. Для этого надо сперва 3-мерные координаты (x3,y3,z3) выразить через двумерные (x2,z2). Для этого дана система:
Код:
x2 = x3 + y3*Cos(alfa)
z2 = z3 - y3*Sin(alfa) , alfa - видимый угол между осями x3 и y3
затем трехмерные координаты выражаются через сферические:
Код:
z3 = R*Sin(fi)
y3 = R*Sin(nu)*Cos(fi)
x3 = R*Cos(nu)*Cos(fi), 
fi - угол между R и ее проекцией на плоскость x3oy3
nu - угол между осью x3 и проекцией R на x3oy3
И наконец, выразив сферические координаты через двумерные получается такая система:
x2 = R*Cos(nu)*Cos(fi) + R*Sin(nu)*Cos(fi)*Cos(alfa)
z2 = R*Sin(fi) - R*Sin(nu)*Cos(fi)*Sin(alfa)

Кажется довольно таки просто, но не получается , вместо сферы выходит что то вроде какого то "перекошенного эллипсоида".
Делал я так:
Цитата:
Private Sub Command1_Click()
xc = 500
yc = 500
zc = 500
pi = 3.14159265
R = 100
For nu = (0) To (2 * pi) Step 0.4
For fi = -pi / 2 To (pi / 2) Step 0.01
X2 = R * Cos(nu) * Cos(fi) + R * Cos(fi) * Sin(nu) * Cos(pi / 4)
z2 = R * Sin(fi) - R * Sin(nu) * Cos(fi) * Sin(pi / 4)
a.PSet (xc + X2, zc + z2)
Next fi
Next nu
End Sub
Не пойму, что неправильного? Чего только не пытался делать - результат все тот же((. Буду очень признателен тому, кто объяснит в чем дело или подскажет другой способ построения. Заранее спасибо.

Последний раз редактировалось Sergantes; 29.09.2009 в 01:01.
Sergantes вне форума Ответить с цитированием
Старый 29.09.2009, 01:42   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Неправильно - что не учитываешь сокращение длин вдоль наклонной оси.

Например, если рисовать в стандартной диметрии, альфа будет 45 градусов, а сокращение длины вдвое:
Код:
x2 = x3 + y3*sqrt(2)/4
y2 = z3 - y3*sqrt(2)/4
Кстати, знаки при y3 в этих формулах можно выбирать по вкусу
Black Fregat вне форума Ответить с цитированием
Старый 29.09.2009, 15:17   #3
Sergantes
Новичок
Джуниор
 
Аватар для Sergantes
 
Регистрация: 28.09.2009
Сообщений: 2
По умолчанию

Black Fregat, спасибо большое! Точно, забыл я о наклонной.
Sergantes вне форума Ответить с цитированием
Старый 06.10.2009, 21:20   #4
Hoross
Новичок
Джуниор
 
Регистрация: 06.10.2009
Сообщений: 1
По умолчанию

А тогда такой вопрос: как нарисовать модель Земли со всеми широтами и долготами и при этом нулевой меридиан и экватор выделялись цветом и была возможность задания в форме долготы и широты в градусах и чтобы сфера поворачивалась на данную точку?

Последний раз редактировалось Hoross; 06.10.2009 в 21:27.
Hoross вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Basic (Visual Studio 2005) JUDAS О форуме и сайтах клуба 1 04.07.2009 23:09
(Visual Basic 6) phantom4eg Помощь студентам 5 22.04.2009 19:00
Visual Basic asd48 Visual C++ 1 21.04.2009 11:53