آموزش تخصصی ویژوال بیسیک 6

مسائل مربوط به برنامه نویسی ویژوال بیسیک 6

آموزش تخصصی ویژوال بیسیک 6

مسائل مربوط به برنامه نویسی ویژوال بیسیک 6

آموزش open gl قسمت ششم

خوب میریم سراغ آموزش قسمت ششم OpenGL :

در این قسمت یاد میگیرین که دیسک رسم کنین و در ادامه نیز چگونگی چسباندن عکس به اشکال سه بعدی رو یاد میگیرین.

۱- رسم استوانه:

۲- رسم دیسک:

۳- رسم دیسک مجهول(مثلا دیسک نیم دایره)



برای رسم استوانه و دیسک و دایره ما از کلاس Quadric استفاده میکنیم.به طور کلی هر شئی که دایره در آن به کار رفته باشد وابسته به کلاس Quadric است.

۱ - رسم استوانه:

برای رسم استوانه ما ابتدا یک متغیر از نوع Variant تعریف می کنیم . سپس متغیر را برابر کلاس Quadric قرار میدهیم بعد از آن هم با توابع کتابخانه glu اشکال مورد نظر خود را رسم میکنیم.کدهای زیر رو در DrawGLScene (مکان رسم اشکال) بنویسید:

Public Xrot , Yrot , Zrot as GLfloat

Public Function DrawGLScene() as Boolean

glClear clrColorBufferBit

glLoadIdentity

glRotatef xrot , 1 , 0 , 0

glRotatef yrot , 0 , 1 , 0

glRotatef zrot , 0 , 0 , 1



Dim Q

Q = gluNewQuadric

gluQuadricDrawStyle Q , qdsLine

glColor4f 1,1,1,1

gluCylinder Q , 0.3 , 0.3 , 0.8 , 15 , 15



Xrot = Xrot + 0.3

Yrot = Yrot + 0.2

Zrot = Zrot + 0.4



DrawGLScene = True

End Function

کدهایی که کمرنگ هستند تکراری هستند و فقط برای یادآوری بود که کدهای مربوط به رسم اشیا باید در این فانکشن نوشته شوند.

تحلیل کد برنامه: در خط اول ابتدا سه متغیر برای متحرک کردن شئ نوشتیم.در خط چهارم به کمک تابع glLoadIdentity شئ خود را ثابت و بدون حرکت کردیم تا حرکت را به عهده متغیر ها قرار دهیم. خط های ۸ و ۹ و ۱۰ و ۱۱ و ۱۲ را برای رسم استوانه نوشتیم. خط های ۱۳ و ۱۴ و ۱۵ هم برای متحرک کردن شئ است.

و اما شکل کلی تابع gluCylinder (تابع رسم استوانه): gluCylinder

خطوط عمودی , خطوط افقی , ارتفاع استوانه , شعاع دایره بالایی استوانه , شعاع دایره پایینی , متغیر

به همین سادگی شما یک استوانه رسم کردید.

--------------------------------------------------------------------------------

۲ - رسم دیسک : رسم دیسک نیز مانند رسم استوانه است با این تفاوت که به جای استفاده از تابع gluCylinder باید از تابع gluDisk استفاده کنیم. کدهای زیر رو در فانکشن DrawGLScene بنویسید:

Public Xrot , Yrot , Zrot as GLfloat

Public Function DrawGLScene () as Boolean

glClear clrColorBufferBit

glLoadIdentity

glRotatef xrot , 1 , 0 , 0

glRotatef yrot , 0 , 1 , 0

glRotatef zrot , 0 , 0 , 1



Dim Q

Q = gluNewQuadric

gluQuadricDrawStyle Q , qdsLine

glColor4f 1,0,0,1

gluDisk Q , 0.1 , 0.7 , 15 , 15



Xrot = Xrot + 0.3

Yrot = Yrot + 0.2

Zrot = Zrot + 0.4



DrawGLScene = True

End Function


--------------------------------------------------------------------------------

۳ - رسم دیسک مجهول(مثل دیسک نیم دایره):

برای رسم دیسک مجهول به جای استفاده از تابع gluDisk باید از تابع gluPartialDisk استفاده کرد. کدهای زیر رو هم امتحان کنین.

Public Xrot , Yrot , Zrot as GLFloat

Public Function DrawGLScene() as Boolean

glClear clrColorBufferBit

glLoadIdentity

glRotatef xrot , 1 , 0 , 0

glRotatef yrot , 0 , 1 , 0

glRotatef zrot , 0 , 0 , 1



Dim Q

Q = gluNewQuadric

gluQuadricDrawStyle Q , qdsLine

glColor4f 1,0,0,1

gluPartialDisk Q , 0.1 , 0.7 , 15 , 15 , 0 , 250



Xrot = Xrot + 0.3

Yrot = Yrot + 0.2

Zrot = Zrot + 0.4



DrawGLScene = True

End Function

شکل کلی تابع gluPartialDisk همانند تابع gluDisk است و فقط یک پارامتر بیشتر دارد(پارامتر آخر) و این پارامتر مشخص کننده مقدار مجهولی دیسک است.

به نظر من رسم دیسک های مجهول بسیار لذت بخش و جالبه
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد