Образуване на повърхности на микро ниво

ОформянеповърхностKoons:Импортиране на "E:\OXK\Poverh1.dxf",1 ' импортиране на всичките 4 линии CurrObjNmb = 0 ' направете първия ред u0 активен Set P00= Polyline.P (0) Set P01= Polyline.P (1) CurrObjNmb = 1 'направете линия u1 активен Set P10 = Polyline.P (0) Задайте P11= полилиния.P (1)

'Решетъчни секции в посока v

За v=0 до 1 стъпка 0.1 CurrObjNmb = 2 Задайте Pb= Polyline.P (v) xb=Pb.x yb=Pb.y zb=Pb.z За u=0 до 1 стъпка 0.1 Pov_Kuns u,v,x,y,z ' Ngpoint.s x,y,z Otrezok.s xb,yb,zb,x,y,z xb=x yb=y z b=z Следващ Следващ

'Решетъчни секции в посока u

За u=0 до 1 стъпка 0.1 CurrObjNmb = 0 Задайте Pb= Polyline.P (u) xb=Pb.x yb=Pb.y zb=Pb.z За v=0 до 1 стъпка 0.1 Pov_Kuns u,v,x,y,z ' Ngpoint.s x,y,z Otrezok.s xb,yb,zb,x,y,z xb=x yb=y z b=z Следващ Следващ ' Изчисляване на точков вектор от u,v

Sub Pov_Kuns (u,v,x,y,z) ' Прави u0-u1 CurrObjNmb = 0 ' прави първия ред u0 активен Set pi = Polyline.P (u) CurrObjNmb = 1 ' прави първия ред u1 активен Set pj = Polyline.P (u) xu=(1-v)*pi.x+v*pj.x yu=(1-v)*pi. y+v*pj.y zu=(1-v)*pi.z+v*pj.z ' Правен v0-v1 CurrObjNmb = 2 ' прави v0 активен Set pi = Polyline.P (v) CurrObjNmb = 3 Set pj = Polyline.P (v) xv=(1-u)*pi.x+u*pj.x yv=(1-u)*pi.y+u*p j.y zv=(1-u)*pi .z+u*pj.z ' Наклонена равнина xi=(1-v)*p00.x+v*p10.x yi=(1-v)*p00.y+v*p10.y zi=(1-v)*p00.z+v*p10.z xj=(1-v)*p01.x+v*p11.x yj=( 1-v)*p01.y+v* p11.y zj=(1-v)*p01.z+v*p11.z xkp=(1-u)*xi+u*xj ykp=(1-u)*yi+u*yj zkp=(1-u)*zi+u*zj ' общо x=xv+xu-xkp y=yv+yu-ykp z=z v+zu-zkp End Sub

Повърхностите Безие са един от начините за рендиране на гладки повърхности.

повърхности

Фиг. 1. Повърхност на Безие.

Ако имаме колекция от точки (правоъгълна мрежа) в пространството, тогава можемизградете гладка повърхност, която ще "повтаря" многостенна повърхност (фиг.1.)

ниво

Фиг.2. Зелените точки са контролните точки, върху които е изградена повърхността. Жълтите линии ги свързват. Бялата мрежа е апроксимационната мрежа на повърхността на Безие.

Трябва да създадетееднаповърхност на Безие, дефинирана от поне 16 контролни точки, като използвате функции от GL библиотеката (glMap2[fd], glMapGrid2[fd], glEvalMesh2). Ще бъдат добавени точки за сложността и оригиналността на повърхността. За безинтересна повърхност могат да бъдат приспаднати байлс. Източникът на светлина присъства.

Описание на функцията glMap2[fd], glMapGr > Всички следващи функции се извикват на същото място като примитивите.

посока

Фиг. 1. Контролни точки B(i,j). Упътвания u, v.

Задайте точки на прекъсване:

voidglMap2d( цел GLenum,

// тип данни. Ако е равно на GL_MAP2_VERTEX_3, тогава конструкцията на повърхността се основава на масив от точки от три координати (x, y, z). Можете да зададете GL_MAP2_VERTEX_4, тогава точката се дава от 4 координати (x, y, z, h), където h е теглото.

// начална стойност на параметъра в посока u

// крайна стойност на параметъра в посока u

// количество двойни данни между съседни точки в посока u

// брой точки в посока u

// начална стойност на параметъра в посока v

// крайна стойност на параметъра в посока v

// количество двойни данни между съседни точки в посока v

// брой точки в посока v

// масив от контролни точки, определящи повърхността

Определяне на апроксимиращата мрежа, използвана за изграждане на повърхността:

voidglMapGrid2d( GLint un,

//броят на точките на мрежата в посока u ще бъде un+1

// начална стойност на параметъра в посока u

// крайна стойност на параметъра в посока u

// броят на точките на мрежата в посока v ще бъде равен на vn+1

// начална стойност на параметъра в посока v

// крайна стойност на параметъра в посока v

Указва параметрите за рендиране за повърхност на Безие.

voidglEvalMesh2( режим GLenum,

// GL_LINE - показва се мрежата, апроксимираща повърхността GL_FILL - показва се повърхността GL_POINT - точките на мрежата на апроксимиращата повърхност