Witam,
Chciałem wymodelować w OpenGL-u wazon za pomocą powierzchni Beziera. Jednak, nie mogę dojść do ładu, dlaczego przy 9 punktach kontrolnych w kierunku v, wazon się nie wyświetla. Chcę, aby płaszczyzna była zamknięta; wymodelować go w taki sposób, aby zaczynał i kończył się w tym samym punkcie - i gdy korzystam z mniej niż 9 wspomnianych punktów, wszystko jest OK - tylko, że wówczas powierzchnia zamyka się "ostro". Krótko mówiąc, chcę uzyskać wazon, którego podstawa będzie w miarę okrągła przy 9 punktach kontrolnych. Mam nadzieję, że w miarę jasno napisałem, o co mi chodzi. ;) Na wszelki wypadek, w załączniku jest to, jaką podstawę wazonu chcę uzyskać.
Poniżej fragment kodu:
// 18 x 20
float wazon[9][5][3] =
{
{
{9.0, 0.0, 0.0},
{0.0, 7.0, 0.0},
{18.0, 12.0, 0.0},
{0.0, 14.0, 0.0},
{9.0, 20.0, 0.0}
},
{
{9.0, 0.0, -9.0},
{0.0, 7.0, 0.0},
{18.0, 12.0, -18.0},
{0.0, 14.0, 0.0},
{9.0, 20.0, -9.0}
},
{
{0.0, 0.0, -9.0},
{0.0, 7.0, 0.0},
{0.0, 12.0, -18.0},
{0.0, 14.0, 0.0},
{0.0, 20.0, -9.0}
},
{
{-9.0, 0.0, -9.0},
{0.0, 7.0, 0.0},
{-18.0, 12.0, -18.0},
{0.0, 14.0, 0.0},
{-9.0, 20.0, -9.0}
},
{
{-9.0, 0.0, 0.0},
{0.0, 7.0, 0.0},
{-18.0, 12.0, 0.0},
{0.0, 14.0, 0.0},
{-9.0, 20.0, 0.0}
},
{
{-9.0, 0.0, 9.0},
{0.0, 7.0, 0.0},
{-18.0, 12.0, 18.0},
{0.0, 14.0, 0.0},
{-9.0, 20.0, 9.0}
},
{
{0.0, 0.0, 9.0},
{0.0, 7.0, 0.0},
{0.0, 12.0, 18.0},
{0.0, 14.0, 0.0},
{0.0, 20.0, 9.0}
},
{
{9.0, 0.0, 9.0},
{0.0, 7.0, 0.0},
{18.0, 12.0, 18.0},
{0.0, 14.0, 0.0},
{9.0, 20.0, 9.0}
},
{
{9.0, 0.0, 0.0},
{0.0, 7.0, 0.0},
{18.0, 12.0, 0.0},
{0.0, 14.0, 0.0},
{9.0, 20.0, 0.0}
}
};
// rysowanie
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 5, 0, 1, 15, 9, &wazon[0][0][0]);
glEnable(GL_MAP2_VERTEX_3);
glMapGrid2f(20, 0, 1, 20, 0, 1);
glEvalMesh2(GL_LINE, 0, 20, 0, 20);
Pozdrawiam :)
- podstawa.jpg (9 KB) - ściągnięć: 154