Domingo 15 de Diciembre de 2024, 11:44
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Superficies Bezier con Opengl
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Superficies Bezier con Opengl (Leído 3767 veces)
darioup
Nuevo Miembro
Mensajes: 4
Superficies Bezier con Opengl
«
en:
Jueves 18 de Marzo de 2010, 07:47 »
0
Hola a to2, tengo la silueta de una figura pero sin relleno, el objetivo es poder rellenarla con cualqueir color sin sobrepasar los bordes tal como se muestra en el sig codigo
Código: C
#include <GL/glut.h>
int
maxY
=
537
;
void
init
(
void
)
{
glClearColor
(
0.09
,
0.36
,
0.478
,
0.0
)
;
glMatrixMode
(
GL_PROJECTION
)
;
gluOrtho2D
(
0.0
,
585
,
0.0
,
537
)
;
}
void
bezier4p
(
GLfloat mat
[
]
[
4
]
[
3
]
,
int
tam
,
int
w
)
{
glLineWidth
(
w
)
;
for
(
int
i
=
0
;
i
<
tam
;
i
++
)
{
glMap1f
(
GL_MAP1_VERTEX_3
,
0.0
,
1
,
3
,
4
,
&
mat
[
i
]
[
0
]
[
0
]
)
;
glEnable
(
GL_MAP1_VERTEX_3
)
;
//activa el evaluador
glMapGrid1f
(
250
,
0.0
,
1.0
)
;
glEvalMesh1
(
GL_LINE
,
0
,
250
)
;
glDisable
(
GL_MAP1_VERTEX_3
)
;
}
}
void
CurvadeBezier
(
void
)
{
glClear
(
GL_COLOR_BUFFER_BIT
)
;
GLfloat cuerpo
[
8
]
[
4
]
[
3
]
=
{
{
{
267
,
maxY
-
78
,
0
}
,
{
297
,
maxY
-
146
,
0
}
,
{
297
,
maxY
-
146
,
0
}
,
{
216
,
maxY
-
248
,
0
}
}
,
{
{
216
,
maxY
-
248
,
0
}
,
{
185
,
maxY
-
299
,
0
}
,
{
217
,
maxY
-
387
,
0
}
,
{
297
,
maxY
-
408
,
0
}
}
,
{
{
297
,
maxY
-
408
,
0
}
,
{
413
,
maxY
-
438
,
0
}
,
{
505
,
maxY
-
347
,
0
}
,
{
445
,
maxY
-
246
,
0
}
}
,
{
{
445
,
maxY
-
246
,
0
}
,
{
370
,
maxY
-
158
,
0
}
,
{
370
,
maxY
-
158
,
0
}
,
{
400
,
maxY
-
89
,
0
}
}
,
{
{
400
,
maxY
-
89
,
0
}
,
{
362
,
maxY
-
118
,
0
}
,
{
362
,
maxY
-
118
,
0
}
,
{
351
,
maxY
-
152
,
0
}
}
,
{
{
351
,
maxY
-
152
,
0
}
,
{
336
,
maxY
-
103
,
0
}
,
{
336
,
maxY
-
103
,
0
}
,
{
360
,
maxY
-
7
,
0
}
}
,
{
{
360
,
maxY
-
7
,
0
}
,
{
300
,
maxY
-
40
,
0
}
,
{
300
,
maxY
-
40
,
0
}
,
{
320
,
maxY
-
156
,
0
}
}
,
{
{
320
,
maxY
-
156
,
0
}
,
{
307
,
maxY
-
96
,
0
}
,
{
307
,
maxY
-
96
,
0
}
,
{
265
,
maxY
-
80
,
0
}
}
}
;
bezier4p
(
cuerpo
,
8
,
7
)
;
glFlush
(
)
;
}
int
main
(
void
)
{
glutInitWindowSize
(
600
,
600
)
;
glutCreateWindow
(
"Curva de Bezier"
)
;
init
(
)
;
glutDisplayFunc
(
CurvadeBezier
)
;
glutMainLoop
(
)
;
}
para rellenar tengo entendido que tengo q utilizar algo como esto
Código: C
void
rellena
(
GLfloat mat
[
]
[
4
]
[
3
]
,
int
lineas
)
{
for
(
int
i
=
0
;
i
<
lineas
;
i
++
)
{
glMap2f
(
GL_MAP2_VERTEX_3
,
0.0
,
1
,
3
,
4
,
0.0
,
1
,
12
,
4
,
&
mat
[
i
]
[
0
]
[
0
]
)
;
glEnable
(
GL_MAP2_VERTEX_3
)
;
//activa el evaluador
glMapGrid2f
(
250
,
0.0
,
1.0
,
250
,
0.0
,
1.0
)
;
glEvalMesh2
(
GL_FILL
,
0
,
250
,
0
,
250
)
;
}
...
//y mandara a llamar a la funcion rellenar dentro de CurvadeBezier()
rellena
(
cuerpo
,
8
)
;
}
de alguna manera lo hace pero lo hace muy extranio creo q hacen fala puntos de control para q se defina bn la superficie sobre la cual se va a colorear pro ya anduve buscando en la red y no encontre mas q lo q tengo hasta el momento, o si alguien conoce sobre superficies de bezier se los agradecere bastante algun manual o algo parecido pero q realmente contenga superficies curveadas bezier y de preferencia para 2D
Tweet
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Superficies Bezier con Opengl