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

[تنبيه - عنوان غير مناسب : ]ممكن مساعدة عاجلة

بدأه ألماسة نادرة في 3 يونيو 2009 · 7 رد · 1,145 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

ياليت ألقى عندكم الجواب الكافي

أنا عندي هالبرنامج أبغى السيارة(معليش على رداءة الشكل) لماتدور دورة وحدة فقط تمشي يعني( تدور بعد ماتخلص دورة وحدة بس تمشي وتكمل المسيرة)

وبعد عندي مشكلة ثانية أنا ماأدري ليش أبغى السيارة تصير تحت وتصير فوق

وهذي محاولتي

#include<GL/glut.h>

#include<stdlib.h>

#include<math.h>

float rotTheta=0.0;

float trans=0.0;

void init()

{

glClearColor(1.0,1.0,1.0,0.0);

glMatrixMode(GL_MODELVIEW);

glOrtho(-200.0,200.0,-200.0,200.0,-200.0,200.0);

}

void Graph(void)

{

glClear(GL_COLOR_BUFFER_BIT);

glColor3f(1.0,0.0,1.5);

glPushMatrix();

glRotatef(-rotTheta,0,0,1);

glTranslatef(trans,0,0);

glBegin(GL_QUADS);

glVertex2f(50,150);

glVertex2f(100,150);

glVertex2f(100,155);

glVertex2f(50,155);

glVertex2f(105,150);

glVertex2f(110,150);

glVertex2f(110,155);

glVertex2f(105,155);

glEnd();

glPopMatrix();

glutSwapBuffers();

//glFlush();

}

void rotateHex(void)

{

rotTheta +=0.2;

if (rotTheta > 190)

rotTheta=0;

glutPostRedisplay();

}

void transTheta(void)

{

trans+=0.2;

if (trans==0)

trans=0;

glutPostRedisplay();

}

void mouse(int button,int state,int x, int y)

{

switch(button){

case GLUT_LEFT_BUTTON:

if(state==GLUT_DOWN)

//glutIdleFunc(transTheta);

glutIdleFunc(NULL);

break;

case GLUT_RIGHT_BUTTON:

if(state==GLUT_DOWN)

glutIdleFunc(rotateHex);

//glutIdleFunc(NULL);

break;

default:

break;

}

}

int main(int argc,char**argv)

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);

glutInitWindowPosition(50,100);

glutInitWindowSize(500,500);

glutCreateWindow("My GRAPH");

init();

glutDisplayFunc(Graph);

glutMouseFunc(mouse);

//glutIdleFunc(rotateHex);

glutIdleFunc(transTheta);

glutMainLoop();

return 0;

}

وبعد أبغى اذا عندي مجموعة من الأشكال وأبغى أحرك شكل واحد فقط كييييييييف

والله يرزقكم الفردوس الأعلى اللي يرد علي لأنه طلب منا المشروع قبل أسبوع والسبت التسليم

#2

وعليكــم السـلام ورحمة الله وبركاتـه..

اضف شروط معينة .. اذا وصلت زاوية معينة .. اكمل المسير .. ومن هالكلام ..

#include<windows.h>
#include<GL/glut.h>
#include<stdlib.h>
#include<math.h>
float rotTheta=0.0;
float trans=0.0;

void init()
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_MODELVIEW);
glOrtho(-200.0,200.0,-200.0,200.0,-200.0,200.0);
}
void Graph(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0,0.0,1.5);
	if(rotTheta != -1 )
		rotTheta+=0.5f;
	if(rotTheta>360)
		rotTheta = -1.0f;
	if(rotTheta == -1.0f)
		trans+=0.2;
	//	if(trans > 20 )
	//		trans = 0.0f;

	glPushMatrix();

		glTranslatef(trans,0,0);
		glRotatef(-rotTheta,0,0,1);

		glBegin(GL_QUADS);
			glVertex2f(50,150);
			glVertex2f(100,150);
			glVertex2f(100,155);
			glVertex2f(50,155);
			glVertex2f(105,150);
			glVertex2f(110,150);
			glVertex2f(110,155);
			glVertex2f(105,155);
		glEnd();

	glPopMatrix();
	glutSwapBuffers();

}
void rotateHex(void)
{
		rotTheta +=0.2;
		if (rotTheta > 190)
		rotTheta=0;
		glutPostRedisplay();
}
void transTheta(void)
{
	trans+=0.2;
	if (trans==0)
	trans=0;
	glutPostRedisplay();
}
void mouse(int button,int state,int x, int y)
{
	switch(button){
		case GLUT_LEFT_BUTTON:
		if(state==GLUT_DOWN)
		//glutIdleFunc(transTheta);
		glutIdleFunc(NULL);
		break;

		case GLUT_RIGHT_BUTTON:
		if(state==GLUT_DOWN)
		glutIdleFunc(rotateHex);
		//glutIdleFunc(NULL);

		break;
		default:
		break;
	}
}


int main(int argc,char**argv)
{
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
	glutInitWindowPosition(50,100);
	glutInitWindowSize(500,500);
	glutCreateWindow("My GRAPH");

	init();

	glutDisplayFunc(Graph);
	glutMouseFunc(mouse);

	glutIdleFunc(Graph);
	glutMainLoop();
	return 0;
}

اقتباس
وبعد أبغى اذا عندي مجموعة من الأشكال وأبغى أحرك شكل واحد فقط كييييييييف

استخدم مصفوفة جديدة ... عن طريق glPush و glPop .. وتلغي أثر المصفوفة السابقة عن طريق loadIdentity اذا رغبت في ذلك .. مثال :

	glPushMatrix();
	glLoadIdentity();
	glTranslatef(0,2,0);
	// draw here 1
	glPopMatrix();

	glPushMatrix();
	glLoadIdentity();
	glTranslatef(0,-2,0);
	// draw here 2
	glPopMatrix();

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

الأخ الكريم/الأخت الكريمة

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

مرحباً بكم في منتدى الفريق العربي للبرمجة

نود تنبيهك أن العنوان غير مناسب.

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4

شكراً لك اخي الكريم على المساعدة والله يوفقك ويرزقك من حيث لا تحتسب

#5

ألماسه

اقتباس
وبعد أبغى اذا عندي مجموعة من الأشكال وأبغى أحرك شكل واحد فقط كييييييييف

ضعي جميع الاشكال التي لاتريدنها ان تتحرك

بدون دالة pop ,push

والسياره التي نريدها الحركه نسبقها بتلك الدالتين

للتوضيح أكثر

void Graph (void)
{ glClear(GL_COLOR_BUFFER_BIT);    
 glColor3f(0.7, 0.8, 0.3);

          glBegin(GL_POLYGON);
glColor3f(1.0,0.0, 0.0);


glVertex2i(-200,90);
glVertex2i(-200,95);
glVertex2i(-200,100);
glVertex2i(160,100);
glVertex2i(165,95);
glVertex2i(165,90);
         glEnd();
   glFlush();
glPushMatrix();
 glRotatef(-rotTheta,0,0,1);
 glTranslatef(trans,0,0);
   glBegin(GL_POLYGON);
glColor3f(0.0,1.0, 1.0);
 glVertex2i(20,120);
 glVertex2i(20,130);
 glVertex2i(26,130);
 glVertex2i(26,135);
  glVertex2i(36,135);
   glVertex2i(36,130);
   glVertex2i(42,130);
   glVertex2i(42,120);
   glVertex2i(39,120);
   glVertex2i(39,115);
    glVertex2i(36,115);
  glVertex2i(36,120);
   glVertex2i(29,120);
    glVertex2i(29,115);
     glVertex2i(26,115);
   glVertex2i(26,120);


         glEnd();
   glPopMatrix();
   glutSwapBuffers();
   //glFlush();

}

أخي الشمري

اقتباس
اضف شروط معينة .. اذا وصلت زاوية معينة .. اكمل المسير .. ومن هالكلام ..

العمل الذي أنت عملته لم نقصد مثل هذا

الذي نقصده

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

يعني مثل الواقع مثل ماتسقون انتم

كيف نسويييييييهـأاااا

وقسم بالله فكرت فيه بكل الطرق ماطلع معي وتاريخ التسليم يوم السبت

الله يرضى عليك ساعدنا

#6

بدك تعرفي احداثيات اللفه

وتعملي شرط انه اذا وصلت السياره اللفه تعملي زياده او نقصان ال y

سبحانك لا علم لنا إلا ما علمتنا إنك أنت العزيز الحكيم

#7

اعمل زياده او نقصان لy

اين هو هذا الy

??

الكود تبعي بالمرفقات شاهده من فضلك

graph.rar

#8

السلام عليكــم ورحمـة الله وبركاتــه ،،

السياره تمشي من اليسار الى اليمين

وعندما نضغط كلك يمين تقف السياره

وعندما نضغط كلك يسارتعمل دوران وترجع

ياليت احد يكتب لنا الكود باسرع وقت التسليم السبت

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

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

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

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

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