Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Курсова крок 2

leave a comment »

Тепер я пробую виділити тільки точки поверхні.

На картинці знизу ніби виводяться точки поверхні, але один з торів чомусь дірявий. На інших фігурах вроді працює, і алгоритм ніби правильний. Тому поки що нічого чіпати не буду. Принаймі поки не придумаю, як їх групувати в трикутники.

Точки, за якими буде будуватись меш.

Точки, за якими буде будуватись меш.

Код виділення точок поверхні:

void genhull()
    {
        vertexes.clear();
        for(int i=0;i<Nsize;i++)
            for(int j=0;j<Nsize;j++)
                for(int k=0;k<body[i][j].size();k++)
                {
                        vertexes[Vertex(i,j,body[i][j][k].a)]=1;
                        vertexes[Vertex(i,j,body[i][j][k].b)]=1;
                        for(int h=body[i][j][k].a+1;h<body[i][j][k].b;h++)
                        {
                            if(!(xi(i+1,j,h)&&xi(i-1,j,h)&&xi(i,j+1,h)&&xi(i,j-1,h)))
                                vertexes[Vertex(i,j,h)]=1;
                        }
                }
    }

Два тори зроблені за допомогою функцій:

bool thorus(double x,double y,double z)
{
    double l=sqrt(x*x+y*y);
    return (l<(thorus_R+thorus_r))&&(l>(thorus_R-thorus_r))&&
    ((l-thorus_R)*(l-thorus_R)+z*z<thorus_r*thorus_r);
}

bool thoruses(double x,double y, double z)
{
    return thorus(x-thorus_R,y,z)||thorus(x,z,y);
}

Доповнення

Кудась поділась одна грань.

Кудась поділась одна грань.


Пошук точок оболонки таки має глюки, що видно з зображення паралелепіпеда вгорі.

Advertisements

Written by bunyk

Жовтень 10, 2009 at 22:03

Оприлюднено в Графіка, Кодерство

Tagged with

Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: