PDA

View Full Version : یک سوال درباره ++C در مورد گرافیک



hamid_a
شنبه 20 آبان 1385, 17:37 عصر
یک سوال درباره ++C در مورد گرافیک
با سلام خدمت دوستان عزیز
سوال من این بود که چطور می شود فقط با استفاده از دستور putpixel تابع line را نوشت
ممنون میشم اگر راهنمایی کنید.

devil00x
سه شنبه 23 آبان 1385, 01:50 صبح
یک سوال درباره ++C در مورد گرافیک
با سلام خدمت دوستان عزیز
سوال من این بود که چطور می شود فقط با استفاده از دستور putpixel تابع line را نوشت
ممنون میشم اگر راهنمایی کنید.
سلام دوست عزیز.
اینکار بسیار راحت انجام میشه فقط کافیه که یه حلقه بزاری و طول خطی رو می خوای رسم کنی بزاری برای متغییر حلقه و داخل حلقه یه دستور putpixel بنویسم اما بجاب مقدار دهی ثابت از مقدار دهی متغییر استفاده کن .
امیدوارم که متوجه منظورم شده باشی.

sh_roohani
سه شنبه 23 آبان 1385, 09:12 صبح
سلام دوست عزیز،
در مورد دو الگوریتم Digital Differential Analyser یا DDA و Bresenham جستجو کن. دومی تا اونجایی که می دونم می تونه برای محاسبه نقاط تقریبا هر نوع منحنی تطبیق پیدا کنه.

hodhod
دوشنبه 06 آذر 1385, 01:07 صبح
:لبخندساده: سلام خسته نباشید:لبخندساده:
:متفکر: دوست عزیز می خواستم که الگوی(درخت کاج)فقط ستاره ها زیر در برنامه ++ c در خروجی چاپ شود ::متفکر:
با تشکر هدهد

-------------*----------------
-----------***---------------
-------------*----------------
-----------***---------------
---------*****--------------
------------*-----------------
----------***----------------
--------*****---------------
------*******--------------

alireza643
دوشنبه 06 آذر 1385, 14:23 عصر
هدهد عزیز جای این سوال اینجا نیست در ضمن سوالت بوی سوال درسی میده.ولی تو میتو نی از تابع TextOut() استفاده کنی.برای اطلاعات بیشتر هم میتونی تو msdn یه چرخی بزنی.

mortez maya
چهارشنبه 08 آذر 1385, 22:45 عصر
دوست عزیز درخت کاج خیلی آسونه فقط باید با حلقه ها کار کنید موفق یاشید./

پیک سحری
جمعه 24 آذر 1385, 23:37 عصر
================================================== ===============

#include <graphics.h>
#include <stdio.h>
#include <conio.h>

void khat_1(int,int,int,int);
void khat_2(int,int,int,int);
void khat_3(int,int,int,int);
void main()
{
int driver = DETECT,mode;
int y1,y2,x1,x2,i,e,f;
initgraph(&driver,&mode,"c:\\tc\\bgi");
//************************************************** ***
printf("x1:");
scanf("%d",&x1);
printf("y1:");
scanf("%d",&y1);
printf("x2:");
scanf("%d",&x2);
printf("y2:");
scanf("%d",&y2);
//line(x1,y1,x2,y2);
//************************************************** ****
if ( x1==x2 && y1==y2 )
putpixel(x1,y1,GREEN);
//************************************************** ****
if ( x1==x2 && y1!=y2 ) {
for (i=y1;i<y2;i++)
putpixel(x1,i,GREEN);
for (i=y2;i<y1;i++)
putpixel(x1,i,GREEN);
}
//************************************************** *****
if ( x1!=x2 && y1==y2 ) {
for (i=x1;i<x2;i++)
putpixel(i,y1,GREEN);
for (i=x2;i<x1;i++)
putpixel(i,y1,GREEN);
}
//************************************************** ******
if ( x1<x2 && y1<y2 )
khat_1(x1,y1,x2,y2);
//************************************************** ******
if ( x1>x2 && y1>y2 ) {
e=x1; f=y1;
x1=x2; y1=y2;
x2=e; y2=f;
khat_1(x1,y1,x2,y2);
}
//************************************************** ******
if ( x1>x2 && y1<y2 )
khat_2(x1,y1,x2,y2);
//************************************************** ******
if ( x1<x2 && y1>y2 )
khat_3(x1,y1,x2,y2);
//************************************************** ******
getch();
closegraph();
}
//************************************************** ******

void khat_1(int x1,int y1,int x2,int y2)
{
int i,c,d,y3;
float y,a,b;
a=(float)(y2-y1)/(x2-x1);
b=y2-(a*x2);
i=x1;
do {
y=(a*i)+b;
c=i+1;
y3=(a*c)+b;
putpixel(i,y,GREEN);
for (d=y;d<y3;d++)
putpixel(i,d,GREEN);
i++;
} while (i<x2);
}
//************************************************** *******

void khat_2(int x1,int y1,int x2,int y2)
{
int i,c,d,y3;
float y,a,b;
a=(float)(y2-y1)/(x2-x1);
b=y2-(a*x2);
i=x2;
do {
y=(a*i)+b;
c=i;
c=c+1;
y3=(a*c)+b;
putpixel(i,y,GREEN);
for (d=y3;d<y;d++)
putpixel(i,d,GREEN);
i++;
} while (i<x1);
}
//************************************************** ********

void khat_3(int x1,int y1,int x2,int y2)
{
int y3,x,c,d;
float y,a,b;
a=(float)(y2-y1)/(x2-x1);
b=y2-(a*x2);
for (x=x1;x<x2;x++){
y=(a*x)+b;
c=x+1;
y3=(a*c)+b;
putpixel(x,y,GREEN);
for (d=y3;d<y;d++)
putpixel(x,d,GREEN);
}
}
//************************************************** *******
ابتدا برنامه دو نقطه از کاربر میگیره بعد خط رو رسم میکنه
برو حال میکن مگو چیست حال