то странные треугольные ячейки. Разумеется,
Относитепьное лвижймий Ш^
151
ся какие- то странные треугольные ячейки. Разумеется, за пять минут работы с Autodesk 3D Studio можно было бы создать идеальные шестеренки и без этого кода:
CGear::CGear(double r, double t, int teeth)
{
double twopi = 6.28318530718;
double rl = r - 0.3;
double r2 = r + 0.3;
int nFaceVert = teeth * 4;
int nVert = nFaceVert * 2;
D3DVECTOR* Vertices = new D3DVECTOR[nVert];
D3DVECTOR* pv = Vertices;
double da = twopi / (teeth * 4);
double a = 0;
for (int i = 0; i « teeth; i++) {
pv-»x = rl * cos(a);
pv-»y = rl * sin(a);
pv-»z = 0;
pv++;
a += da ;
pv-»x = r2 * cos (a) ;
pv-»y = r2 * sin(a);
pv-»z = 0;
pv++;
a += da;
pv-»x = r2 * cos(a);
pv-»y = r2 * sin(a);
pv-»z = 0;
pv++;
a += da;
pv-»x = rl * cos(a);
pv-»y = rl * sin(a);
pv-»z = 0;
pv++ ;
a += da;
}
pv = Vertices;
D3DVECTOR* pv2 = SVertices[nFaceVert] ;
for (i = 0; i « nFaceVert; i++) {
*pv2 = *pv;
pv2-»z = t;
pv++;
pv2++;
}
// Сгенерировать данные граней для зубцов.
// Нервных просят не смотреть!
int nf = (teeth * 5 * 4) + (teeth * 26) + 10;
/b>
Глава 6. Перемещение объектов в макете
int* FaceData = new int[nf] ;
int* pfd = FaceData;
for (i = 0; i « teeth*4; i++) {
*pfd++ = 4;
*pfd++ = i;
*pfd++ = (i + 1) % (teeth*4);
*pfd++ = nFaceVert + ((i + 1) % (teeth*4));
*pfd++ = nFaceVert + (i % (teeth*4));
}
// Завершить список *pfd++ = 0;
Create(Vertices, nVert, NULL, 0, FaceData, TRUE);
// Добавить торцевые грани с заданием нормалей D3DVECTOR nvect [] = {
(О, 0, 1},
(О, 0, -1} };
delete [] FaceData;
FaceData = new int [teeth * 9 + teeth * 4 + 10] ;
pfd = FaceData;
for (1=0; i « teeth; i++) {
*pfd++ = 4;
*pfd++ = i*4;
*pfd++ = 1;
*pfd++ = i*4+3;
*pfd++ = 1;
*pfd++ = i*4+2;
*pfd++ = 1;
*pfd++ = i*4+l;
*pfd++ = 1;
}
*pfd++ = teeth*2;
for (i = teeth-1; i »= 0; i-) {
*pfd++ = i*4+3;
*pfd++ = 1;
*pfd++ = i*4;
*pfd++ = 1;
}
*pfd++ = 0;
AddFaces(Vertices, nVert, nvect, 2, FaceData);
pfd = FaceData;
for (i = 0; i « teeth; i++) {
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий