當前位置:首頁 » 操作系統 » opengl畫圓演算法

opengl畫圓演算法

發布時間: 2022-05-06 02:45:55

⑴ OpenGl動態畫圓

要看擦除的方式是什麼樣的嘞
最簡單的方法是動態的畫出一個圓,然後再把顏色調成背景色,動態的再畫一遍就模仿了擦除的效果.

⑵ Opengl ES 2.0中,怎樣畫一個圓和橢圓

需要把橢圓的弧線拆分成直線段。當線段足夠密集的時候,在屏幕上看上去就圓了
在xy的直角坐標系中,對於橢圓,將圓心放在原點,長軸(長半徑為r1)與x軸重合,短軸(短半徑為r2)與y軸重合,那從圓心出發與x軸正方向夾角a的射線與橢圓交點為:

r1*cosa

r2*sina

你可以這樣畫橢圓以後通過OpenGL矩陣進行平移和旋轉。圓就是長短軸相等的橢圓~

⑶ 如何用OpenGL畫圓面(不要只有一個圓,圓內要填充顏色)

有兩點要注意:

  1. 初始化時要有glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);當然默認情況是這句

  2. 圓面是用許多個三角形組成的,繪制圓面的函數



voidDrawtri()
{
doublen=50;//分段數
floatR=20;//半徑
inti;
glPushMatrix();
glColor3f(0.0,0.2,0.8);
glBegin(GL_TRIANGLE_FAN);
glVertex2f(0.0,0.0);
for(i=0;i<=n;i++)
glVertex2f(R*cos(2*PI/n*i),R*sin(2*PI/n*i));
glEnd();
glPopMatrix();
}

如需要opengl完整代碼,請繼續留言

⑷ 怎麼用opengl畫圓弧呢知道圓心,圓弧起點和終點坐標了。說說思路也可以哈···要是有源程序更好

#include<GL/glut.h>
#include<stdio.h>
#include<stdlib.h>

GLuintstartList;

voidinit(void)
{
GLUquadricObj*qobj;

startList=glGenLists(1);
qobj=gluNewQuadric();
gluQuadricDrawStyle(qobj,GLU_SILHOUETTE);/*只畫邊緣*/
gluQuadricNormals(qobj,GLU_NONE);/*不算NORMAL(頂點的方向)*/
glNewList(startList,GL_COMPILE);/*只編譯DISPLAYLIST不繪制*/
gluPartialDisk(qobj,0.0,1.0,20,4,0.0,225.0);/*第一個參數是Aquadricobject,然後內圓半徑為0.0,外圓半徑為1.0,z軸向分割片數,最後兩個參數是圓弧的起始角和結束角*/
glEndList();
}

voiddisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();

glColor3f(1.0,1.0,0.0);
glCallList(startList);

glPopMatrix();
glFlush();
}

voidreshape(intw,inth)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-2.5,2.5,-2.5*(GLfloat)h/(GLfloat)w,
2.5*(GLfloat)h/(GLfloat)w,-10.0,10.0);
else
glOrtho(-2.5*(GLfloat)w/(GLfloat)h,
2.5*(GLfloat)w/(GLfloat)h,-2.5,2.5,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

/*ARGSUSED1*/
voidkeyboard(unsignedcharkey,intx,inty)
{
switch(key){
case27:
exit(0);
break;
}
}

intmain(intargc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(300,300);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return0;
}

⑸ 求告知用Opengl 怎麼在三維坐標下畫圓,想達到的目標的是兩個坐標之間畫很多個圓,形成管狀物

Graphicsg=e.Graphics;//創建畫板,這里的畫板是由Form提供的.

Penp=newPen(Color.Blue,1);

Penp1=newPen(Color.Red,1);

for(inti=0;i<40;i++)

{

if(i%2==0)

{g.DrawEllipse(p,panel1.Width/2-5,panel1.Height/2-i,100,50);}

else

{

g.DrawEllipse(p1,panel1.Width/2-5,panel1.Height/2-i,100,50);

}

}

⑹ openGL畫圓

以GL_LINES方式繪制半徑為50的圓邊:
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 0.0f, 0.0f);
float x = 0.0f;
float y = 0.0f;
float R = 50.0f;
float pi = 3.1415927;

for(int i = 0; i<10;i++)
{
GL_LINES(R*cos(i*pi/5), R*sin(i*pi/5),R*cos((i+1)*pi/5), R*(sin(i+1)*pi/5));
}

glFlush();
}

GL_POINTS方式類似,就是把循環裡面的繪制函數變成GL_POINTS並帶入單個點的x和y坐標就好了。至於其他參數下的截圖,你就自己修改下循環參數就可以了。

⑺ c++ opengl怎麼畫圓

用Ellipse(float x,float y,float w,float h)吧,這是畫橢圓的函數,x,y為中心坐標,w,h是橢圓的寬高,如果w=h那就是一個圓了,比如Ellipse(100,100,50,50)就是在100,100位置畫一個直徑為50的圓

⑻ 關於opengl es 如何畫圓 以及不規則圖形

球面坐標計算三重積分:k是緯度(-90~90) m是經度(0~360)x=r*sink*cosmy=r*sink*sinmz=r*cosk繪制柱面的話 只要計算緯度為0時的x,y,z。經度的采樣間隔要小於30

⑼ openGL 畫圓的問題

glBegin(GL_LINE_LOOP);
for(i=0; i<n; ++i)
glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i));
glEnd();

上面4行代碼就是畫半徑為R的圓用的, 如果你要讓圓的半徑是5, 圓心在5, 5的話

需要改成

glBegin(GL_LINE_LOOP);
for(i=0; i<n; ++i)
glVertex2f(5 + 5*cos(2*Pi/n*i), 5 + 5*sin(2*Pi/n*i));
glEnd();

或者把R改成5

⑽ OpenGL 畫圓

木有...只能模擬多邊形不斷細化

熱點內容
rc4c語言實現 發布:2024-10-07 10:08:34 瀏覽:407
為什麼steam每天登錄都要輸密碼 發布:2024-10-07 10:08:33 瀏覽:436
電腦軟體連接不到伺服器怎麼解決 發布:2024-10-07 10:04:07 瀏覽:923
pubg如何換伺服器圖解 發布:2024-10-07 10:04:06 瀏覽:320
androidstudio異常 發布:2024-10-07 09:50:48 瀏覽:471
視頻緩存轉mp4 發布:2024-10-07 09:35:37 瀏覽:27
Java的腳本語言有哪些 發布:2024-10-07 09:27:43 瀏覽:876
如何使用香港伺服器 發布:2024-10-07 09:01:37 瀏覽:916
對戰平台搭建cs伺服器 發布:2024-10-07 09:00:16 瀏覽:528
安卓游戲在哪個文件裡面改數據 發布:2024-10-07 08:48:50 瀏覽:789