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 ());