PDA

View Full Version : شکل کروی



alirah84
جمعه 01 خرداد 1394, 18:06 عصر
در این برنامه یک صفحه شطرنجی 8 در 8 روی یک شکل کروی انداخته میشه.چجوری میتونم صفحه شطرنجی 16 در 16 روی کره بندازم که شکل کروی بهتر نمایش داده بشه؟

#include <iostream>
#include <cmath>
#include <GL/glut.h>
using namespace std;
void display()
{
int i ,j=1 , c=1;
float u=-0.5 , v=0.0 , R=100.0 , p=3.1415;
const float t=1.0/8.0;
float poly[12];
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
gluLookAt(0.0,1.0,0.0,1.0,0.0,1.0,0.0,1.0,0.0);
for (i=1;i<=8;i++)
{
for (j=1;j<=8;++j)
{
poly[0]=R*cos(p*u)*cos(2*p*v);
poly[1]=R*cos(p*u)*sin(2*p*v);
poly[2]=R*sin(p*u);


poly[3]=R*cos(p*(u+t))*cos(2*p*v);
poly[4]=R*cos(p*(u+t))*sin(2*p*v);
poly[5]=R*sin(p*(u+t));
poly[6]=R*cos(p*(u+t))*cos(2*p*(v+t));
poly[7]=R*cos(p*(u+t))*sin(2*p*(v+t));
poly[8]=R*sin(p*(u+t));
poly[9]=R*cos(p*u)*cos(2*p*(v+t));
poly[10]=R*cos(p*u)*sin(2*p*(v+t));
poly[11]=R*sin(p*u);
if (c==1) glColor3f(1.0,1.0,0.0);
if (c==-1) glColor3f(1.0,0.5,0.0);
c=c* (-1);


glBegin(GL_QUADS);
glVertex4f(poly[0],poly[1],poly[2],1.0);
glVertex4f(poly[3],poly[4],poly[5],1.0);
glVertex4f(poly[6],poly[7],poly[8],1.0);
glVertex4f(poly[9],poly[10],poly[11],1.0);


glEnd();
v= v+(1.0/8.0);
}
u= u+(1.0/8.0);
v=0.0;
c=c*(-1);


}
glFlush();
}
void init()
{
glEnable(GL_DEPTH_TEST);
glClearColor(0.0,0.0,0.0,0.0);
glColor3f(1.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-200,200,-200,200,-200,200);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH );
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("Sphere-Checkered");
glutDisplayFunc(display);
init();
glutMainLoop();


}

ravaei
جمعه 01 خرداد 1394, 19:42 عصر
درود دوست عزیز ... میشه در مورد کتابخونه GL/glut توضیح بدی ؟ من تا حال باهاش کار نکردم و با دو تا کامپایلر minGW کیوت و code::Blocks هم امتحان کردم اونا هم نشناختن :متفکر:
شما خودت با چه کامپایلری و تو چه محیطی ران میکنی این کد رو؟؟

alirah84
جمعه 01 خرداد 1394, 20:00 عصر
من با Visual Studio ران می کنم.باید کتابخانه Glut رو که برای Opengl هست اضافه کنی به کتابخانه هات

ali chegini
یک شنبه 03 خرداد 1394, 12:36 عصر
سلام. به نظرم بهتره از توابع رسم کره استفاده کنی.
شما اینجا هر قطعه از کره رو جدا رسم میکنی و در جای مناسب قرار میدی .

https://www.opengl.org/sdk/docs/man2/xhtml/gluSphere.xml
https://www.opengl.org/resources/libraries/glut/spec3/node81.html