الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

من يستطيع مساعدتي في رسم هذا الشكل بالاوبن جي ال

بدأه سكآكر في 11 مايو 2011 · 4 رد · 1,859 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

كيف يمكنني رسم الشكل التالي باستخدام OpenGL primitives

واتمنى شيئ من التوضيح لاني ارى الشكل غامض بالنسبة لي

36849501.jpg

وشكرا..

خآلص احترامي

#2

لا يوجد رد !!!!

شكرا لكم لقد استطعت حل هذا السؤال بمساعدت منتدى اخر ^_^

#3
#include"windows.h"
#include"conio.h"
#include"iostream"
#include"Gl/gl.h"
#include"math.h"
#include"Gl/glu.h"
#include"Gl/glaux.h"
#pragma comment (lib,"OpenGL32.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib,"glaux")
/***********CircleMidpoints()********/
void CircleMidpoints(int Xcenter,int
					 Ycenter,int radius){
						 int x=0;
						 int y=radius;
						 int p=1-radius;
						 void CirclePlotPoints(int,int,int,int);
						 CirclePlotPoints(Xcenter,Ycenter,x,y);
						 while(x<y){
							 x++;
							 if(p<0)
								 p+=2*x+1;
							 else{
								 y--;
								 p+=2*(x-y)+1;}
							 CirclePlotPoints(Xcenter,Ycenter,x,y);}}
/*************setPixel*************/
void setPixel(int x,int y){
	glBegin(GL_POINTS);
	glVertex2i(x,y);
	glEnd();
	glFlush();
}
void CALLBACK display(){

	glColor3f(1,0,0);

	glBegin(GL_QUADS);
	glVertex2i(0,0);
	glVertex2i(200,0);
	glVertex2i(200,300);
	glVertex2i(0,300);
	glEnd();

	glColor3f(0,1,0);
	glBegin(GL_QUADS);
	glVertex2i(60,110);
	glVertex2i(60,190);
	glVertex2i(140,190);
	glVertex2i(140,110);
	glEnd();

	glBegin(GL_TRIANGLES);
	glVertex2i(20,50);
	glVertex2i(100,50);
	glVertex2i(20,100);

	glVertex2i(180,50);
	glVertex2i(100,50);
	glVertex2i(180,100);

	glVertex2i(180,250);
	glVertex2i(180,200);
	glVertex2i(100,250);

	glVertex2i(20,250);
	glVertex2i(100,250);
	glVertex2i(20,200);
	glEnd();

	glPointSize(10);
	CircleMidpoints(100,150,80);
	CircleMidpoints(100,150,60);
}
/************CirclePlotPoints**************
**/
void CirclePlotPoints(int Xcenter,int
					  Ycenter,int x,int y){
						  setPixel(Xcenter + x ,Ycenter + y);
						  setPixel(Xcenter - x ,Ycenter + y);
						  setPixel(Xcenter + x ,Ycenter - y);
						  setPixel(Xcenter - x ,Ycenter - y);
						  setPixel(Xcenter + y ,Ycenter + x);
						  setPixel(Xcenter - y ,Ycenter + x);
						  setPixel(Xcenter + y ,Ycenter - x);
						  setPixel(Xcenter - y ,Ycenter - x);
}
void main(){
	auxInitDisplayMode(AUX_RGB);
	auxInitPosition(0,0,600,600);
	auxInitWindow(L"Example");
	auxMainLoop(display);
}
#4
اقتباس
شكرا لكم لقد استطعت حل هذا السؤال بمساعدت منتدى اخر ^_^

جيد قم بوضع الحل من أجل الإفادة

1
#5

اهلا بكم ..

هذا الكود الذي توصلت له..

#include <windows.h>
#include <GL/glut.h>
#include <math.h>

void drawShapes()
{

 //the circules
  //1st one
  GLfloat  xi,yi,theta=0;
  GLfloat x_c,y_c,r;
  int count;

  x_c=200,y_c=250,r=160;
  glBegin(GL_POLYGON);
  for(count=1;count<=10000;count++)
  {
  theta=theta+0.001;
  xi=x_c + r * cos (theta);
  yi=y_c + r * sin (theta);
  glColor3f(1,0,1);
  glVertex2d(xi,yi);
  }
  glEnd();

 //2nd one
  x_c=200,y_c=250,r=130;
  glBegin(GL_POLYGON);
  for(count=1;count<=10000;count++)
  {
  theta=theta+0.001;
  xi=x_c + r * cos (theta);
  yi=y_c + r * sin (theta);
  glColor3f(0,0,1);
  glVertex2d(xi,yi);
  }
  glEnd();

  //3rdcircle
  x_c=200,y_c=250,r=115;
  glBegin(GL_POLYGON);
  for(count=1;count<=10000;count++)
  {
  theta=theta+0.001;
  xi=x_c + r * cos (theta);
  yi=y_c + r * sin (theta);
  glColor3f(0.5,0.5,1);
  glVertex2d(xi,yi);
  }
  glEnd();
//4thcircle
  x_c=200,y_c=250,r=90;
  glBegin(GL_POLYGON);
  for(count=1;count<=10000;count++)
  {
  theta=theta+0.001;
  xi=x_c + r * cos (theta);
  yi=y_c + r * sin (theta);
  glColor3f(0,0,0);
  glVertex2d(xi,yi);
  }
  glEnd();



  //THE POLYGON

  glColor3f(1.0f, 1.0f, 1.0f); // sets color
  glBegin(GL_POLYGON);
  glVertex2i(150, 180); // vertex 1
  glVertex2f(250, 180); // vertex 2
  glVertex2f(250, 315); // vertex 3
  glVertex2f(150, 315); // vertex 4

   glEnd();
   glFlush();
glTranslatef(50,10 ,0);
glEnd();
  //TRIANGLES
  //1
  glBegin(GL_TRIANGLES);
  glColor3f(0,1,0);
   glVertex2i(300,370);
  glVertex2i(300,450);
 glVertex2i(200,450);
  glEnd();

//2
  glBegin(GL_TRIANGLES);
  glColor3f(1,1,0);
  glVertex2i(300,10);
  glVertex2i(300,90);
  glVertex2i(170,10);

  glEnd();
//3
  glBegin(GL_TRIANGLES);
  glColor3f(.2,1,0.5);
  glVertex2i(10,10);
  glVertex2i(110,10);
  glVertex2i(10,110);

glEnd();
//4
  glBegin(GL_TRIANGLES);
  glColor3f(1,1,0);
  glVertex2i(10,370);
  glVertex2i(140,450);
  glVertex2i(10,450);

  glEnd(); 
  glFlush();
}

///////////////////////////////////

void Initial ()
{
 glClearColor(0.0,0.0,0.0,0.0);       // set white background color 
	glMatrixMode(GL_PROJECTION); 
	glLoadIdentity(); 
; 
 gluOrtho2D(0,400,0,500);
}

//the main

int  main()
{ 
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 glutInitWindowSize (300,340);
 glutInitWindowPosition (50,50);
 glutCreateWindow("Abeer_Q2");
  Initial();
 glutDisplayFunc(drawShapes);
 glutMainLoop();
 return 0;
}

ما رأيكم ؟؟؟

هل من اخطاء يجب تصحيحها؟؟

اتمنى ان ارى ردود هذه المرة..

1

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…