octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: plotted circle is regular decagon on opengl graphics


From: Tatsuro MATSUOKA
Subject: Re: plotted circle is regular decagon on opengl graphics
Date: Fri, 12 Aug 2016 12:03:36 +0900 (JST)

----- Original Message -----

> From: Daniel J Sebald 
> To: Andreas Weber ; Tatsuro MATSUOKA ; "octave-maintainers
> Cc: 
> Date: 2016/8/12, Fri 04:25
> Subject: Re: plotted circle is regular decagon on opengl graphics
> 
> On 08/11/2016 03:12 AM, Andreas Weber wrote:
>>  Hi Tatsuro,
>> 
>>  Am 11.08.2016 um 08:17 schrieb Tatsuro MATSUOKA:
>>>  Graphics tool kit: qt and fltk
>>>  plot (1:1, 'o', 'markersize', 24)
>>>  print -depsc circle.eps
>>>  plotted circle is regular decagon (ugly).
>> 
>>  The code to draw the markers with OpenGL is in gl-render.cc
>>  opengl_renderer::make_marker_list
>> 
>>       case 'o':
>>         {
>>           double ang_step = M_PI / 5;
>> 
>>           glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP));
>>           for (double ang = 0; ang < (2*M_PI); ang += ang_step)
>>             glVertex2d (sz*cos (ang)/2, sz*sin (ang)/2);
>>           glEnd ();
>>         }
>> 
>>  As you can see the decagon is hardcoded. AFAIK there is no "draw 
> circle"
>>  command in OpenGL so the only way to get a smoother circle would be to
>>  increase the numer of segments.
> 
> I'm surprised there is no type of primitive for arcs in OpenGL (or its 
> utility library GLU) so that hardware/CPU optimization on graphics card 
> drivers 
> could be used.
> 
> The performance cost is the cos/sin computations, not the underlying driver.  
> The driver essentially sweeps out the same arc no matter how fine the angular 
> resolution is (i.e., it may draw more polygon lines, but the individual 
> polygon 
> lines are shorter so don't need as many computations to complete).
> 
> Rik's changeset works, e.g., test:
> 
> graphics_toolkit ('qt')
> plot(rand(6,1), rand(6,1), 'or')
> set(get(gca,'children'),'MarkerSize',100)
> set(get(gca,'children'),'MarkerFaceColor','green')
> 
> Attached is another algorithm using Pythagorean theorem that seems to work 
> too.
> 
> Dan


I have confirmed that now plotting of 'o' very smooth.

Thanks!

Tatsuro 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]