Mercurial > hg > octave-nkf
changeset 10924:f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Mon, 30 Aug 2010 18:54:05 -0400 |
parents | 4c1ffaed8caa |
children | 2f9de135e7f9 |
files | src/ChangeLog src/gl-render.cc |
diffstat | 2 files changed, 44 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2010-08-30 Ben Abbott <bpabbott@mac.com> + + * gl-render.cc: Matlab compatible markers for the OpenGL. + 2010-08-30 John W. Eaton <jwe@octave.org> * graphics.cc (convert_cdata_1, convert_cdata_2): New functions.
--- a/src/gl-render.cc +++ b/src/gl-render.cc @@ -3092,12 +3092,14 @@ glEnd (); break; case '.': - glBegin (GL_POLYGON); - glVertex2f (-sz/10, -sz/10); - glVertex2f (-sz/10, sz/10); - glVertex2f (sz/10, sz/10); - glVertex2f (sz/10, -sz/10); - glEnd (); + { + double ang_step = M_PI / 5; + + glBegin (GL_POLYGON); + for (double ang = 0; ang < (2*M_PI); ang += ang_step) + glVertex2d (sz*cos(ang)/6, sz*sin(ang)/6); + glEnd (); + } break; case 's': glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); @@ -3153,6 +3155,38 @@ glVertex2f (sz/2, sz/2); glEnd (); break; + case 'p': + { + double ang; + double r; + double dr = 1.0 - sin(M_PI/10)/sin(3*M_PI/10)*1.02; + + glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); + for (int i = 0; i < 2*5; i++) + { + ang = (-0.5 + double(i+1)/5) * M_PI; + r = 1.0 - (dr * mod(double(i+1), 2.0)); + glVertex2d (sz*r*cos(ang)/2, sz*r*sin(ang)/2); + } + glEnd (); + } + break; + case 'h': + { + double ang; + double r; + double dr = 1.0 - 0.5/sin(M_PI/3)*1.02; + + glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); + for (int i = 0; i < 2*6; i++) + { + ang = (0.5 + double(i+1)/6.0) * M_PI; + r = 1.0 - (dr * mod(double(i+1), 2.0)); + glVertex2d (sz*r*cos(ang)/2, sz*r*sin(ang)/2); + } + glEnd (); + } + break; default: warning ("opengl_renderer: unsupported marker `%s'", marker.c_str ());