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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2010, 12:01   #1
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию необходима математическая формула для построения сферы

Привет, прогеры кто нить знает формулу построения сферы? у меня уже голова лопнет скоро, пока придумаю своё. Там такие фигуры вырисовывались, что ппц просто, а вот сферу не строит , ГАД ;D
что то похожее тоже было, но вот по оси Y радиус 0.9 , а по осям X и Z радиус варьировался от 0.9 до 0.98. :-\
gluShpere() не предлагать, там косяк какой то при использовании этой процедуры. Если gluShpere() использовать без остальных объектов, то норм работает. Если же отрисовывать все объекты + gluShpere() , то ошибка вылетает.
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 12.04.2010 в 12:13.
Rin вне форума Ответить с цитированием
Старый 12.04.2010, 13:37   #2
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Вот тут есть... правда на JavaScript-е, но разбраться легко.
http://uggway.ru/sphere/sphere_t.html
evgn вне форума Ответить с цитированием
Старый 12.04.2010, 13:53   #3
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

http://ru.wikipedia.org/wiki/Сфера
Alter вне форума Ответить с цитированием
Старый 12.04.2010, 15:40   #4
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

мужики, тут такое дело=)
то , что на javaScript написано, это та же самая штука , что и в Вики =)
только при http://uggway.ru/sphere/sphere_t.html он ошибку выдаёт.
а так http://uggway.ru/sphere/sphere.html загружает страницу)))
я не тыкаю , просто вдруг кому то ещё понадобится, а он не зайдёт и забьёт. Пример кстати клёвый!


В Вики параметрическая формула хоть и есть, но допереть до неё для меня сложновато, т.к. я школу прогуливал и с тригонометрическими функциями не дружу*(((*. Смысл системы то ясен, но вот какие там углы задавать не могу понять.
При
Код:
 
i:=1;
j:=1;
angle:=0;
repeat
  s[i,j].x:=0.9*cos(angle)*sin(angle*2);
  s[i,j].z:=0.9*sin(angle)*sin(angle*2);
  s[i,j].y:=0.9*cos(angle);
  angle:=angle+0.0261799387799;
  if angle>=pi/2 then angle:=0;
  if j=120 then
  begin
    j:=0;
    i:=i+1;
  end;
  j:=j+1;
until i=26;
строится порнография.


скидываю свою гадость, у кого есть желание поэкперементировать - милости просим
Спасибо, мэны, что отозвались!!!

Пойду дальше экспериментировать.
Вложения
Тип файла: rar Unit1.rar (3.6 Кб, 19 просмотров)
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 12.04.2010 в 16:17.
Rin вне форума Ответить с цитированием
Старый 13.04.2010, 00:08   #5
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Нет там ошибки... это был какой-то глюк сервака.
Там статья....
evgn вне форума Ответить с цитированием
Старый 13.04.2010, 01:43   #6
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

=) статью то я видел. но у меня выпадала надпись "вы не имеете доступ к ресурсам этого сервака" тока на английском.)))
но там я никак не могу понять как он всё таки строит точки сферы???
у меня не выходит, ломаю голову уже 5 день.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 13.04.2010, 11:00   #7
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Сфера строится исходя из количества точек необходимых для распределения по поверхности сферы (numpnt) и радиуса (radius)
Код:
        for(int n = 1;n<=numpnt;n++){
		f = acos(-1 + (2 * n - 1) / numpnt); 
                t = sqrt(numpnt * PI) * f; 
				
		x = round(radius * sin(f) * cos(t)); 
		y = round(radius * sin(f) * sin(t));
		z = round(radius * cos(f));	
         }
evgn вне форума Ответить с цитированием
Старый 13.04.2010, 21:06   #8
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

thank you very much! а что такое N???
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 15.04.2010, 23:18   #9
Krechet
Пользователь
 
Аватар для Krechet
 
Регистрация: 03.12.2008
Сообщений: 76
По умолчанию

Счетчик цикла, вместо привычного i
При установке Линукс не пострадало ни одного пингвина... Зато пострадало много дятлов..
Krechet вне форума Ответить с цитированием
Старый 22.04.2010, 21:16   #10
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Я сделал это! вдруг кому надо будет. Поэтому вот код =)
Код:
type
  t=record
    x,y,z:real;
  end;
  YR = record
    radius,y:real;
  end;
var
 i,j:integer;
  angle:real;
  s:array[0..22,1..120] of T;
  pom:array[0..22] of YR;
  skelet:array [1..120] of T;
  z:real;
..........................
// расчёт точек
angle:=0;
for I := 1 to 120 do
begin
  skelet[i].x:=cos(angle*pi/180);
  sKelet[i].z:=sin(angle*pi/180);;
  angle:=angle+3;
end;
z:=0;
 for i:= 1 to 21 do
  begin
    pom[i].y:=1 - z;
    z:=z+0.1;
  end;
  pom[0].y:=1.02;
  pom[22].y:=-1.02;

  pom[0].radius:=0;
  pom[1].radius:=0.21;
  pom[2].radius:=0.48;
  pom[3].radius:=0.63;
  pom[4].radius:=0.74;
  pom[5].radius:=0.83;
  pom[6].radius:=0.89;
  pom[7].radius:=0.94;
  pom[8].radius:=0.99;
  pom[9].radius:=1;
  pom[10].radius:=1.01;
  pom[11].radius:=1.02;
  pom[12].radius:=1.01;
  pom[13].radius:=1;
  pom[14].radius:=0.99;
  pom[15].radius:=0.94;
  pom[16].radius:=0.89;
  pom[17].radius:=0.83;
  pom[18].radius:=0.74;
  pom[19].radius:=0.63;
  pom[20].radius:=0.48;
  pom[21].radius:=0.21;
  pom[22].radius:=0;

  for i:=0 to 22 do
    for j:= 1 to 120 do
    begin
      s[i,j].x:=skelet[j].x*(pom[i].radius);
      s[i,j].y:=pom[i].y;
      s[i,j].z:=skelet[j].z*(pom[i].radius);
    end;
........................
//построение в Open GL
 randomize;
  for I := 0 to 21 do
    for j := 1 to 120 do
    begin
      if j<>120 then
      begin
        glcolor3f(random,random,random);
        glBegin(GL_LINE_Strip);
        glVertex3f(s[i,j].x,s[i,j].y,s[i,j].z);
        glcolor3f(random,random,random);
        glVertex3f(s[i+1,j].x,s[i+1,j].y,s[i+1,j].z);
        glcolor3f(random,random,random);
        glVertex3f(s[i+1,j+1].x,s[i+1,j+1].y,s[i+1,j+1].z);
        glcolor3f(random,random,random);
        glVertex3f(s[i,j+1].x,s[i,j+1].y,s[i,j+1].z);
        glEnd;
      end
      else
      begin
        jj:=1;
        glcolor3f(random,random,random);
        glBegin(GL_LINE_STRIP);
        glVertex3f(s[i,120].x,s[i,120].y,s[i,120].z);
        glcolor3f(random,random,random);
        glVertex3f(s[i+1,120].x,s[i+1,120].y,s[i+1,120].z);
        glcolor3f(random,random,random);
        glVertex3f(s[i+1,jj].x,s[i+1,jj].y,s[i+1,jj].z);
        glcolor3f(random,random,random);
        glVertex3f(s[i,jj].x,s[i,jj].y,s[i,jj].z);
        glEnd;
      end;
    end;
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа для построения графиков Kris007 Microsoft Office Word 1 04.11.2008 23:37
Математическая формула BangBangFM Помощь студентам 4 02.10.2008 17:57
Компонент для построения графика Rusl92 Общие вопросы Delphi 2 07.09.2008 22:18
Прога для построения сечений D1_ma Помощь студентам 5 11.09.2007 16:23
Математическая модель для программы TranQ Помощь студентам 1 11.06.2007 14:44