PDA

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



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

powerboy2988
شنبه 20 آبان 1385, 19:37 عصر
دستور putpixel رو در یه حلقه قرار می دی که اگه می خوای افقی باشه x=0 و y را یک واحد یک واحد افزایش می دی اما اگر می خوای عمودی باشه معکوس همین کارو می کنی

Mahdi_Delphi
شنبه 20 آبان 1385, 21:09 عصر
اگه هم می خوای خط مورب بکشی با الگوریتم های عادی خط زیاد قشنگی نمی تونی بکشی.

توی بخش الگوریتم ها ، رسم خط رو جستجو کن، چند تا الگوریتم خوب معرفی شده.

hamid_a
یک شنبه 21 آبان 1385, 00:10 صبح
با تشکر از توجه شما
برای این تابع باید مختصات دو نقطه از ورودی دریافت شود ابتدا و انتهای خط.
کشیدن خط افقی یا خط عمودی مشکل نیست با ثابت نگه داشتن سطر یا ستون واضافه کردن دیگری خط راست افقی یا عمودی شکل می گیرد و برای خط مورب با زاویه 45درجه هم سطر را اضافه می کنیم و هم ستون را.
می خواستم بدونم که برای این کار باید از الگوریتم خاصی استفاده کنیم یا نه مثلا معادله خط

powerboy2988
یک شنبه 21 آبان 1385, 18:46 عصر
توی بخش الگوریتم ها ، رسم خط رو جستجو کن، چند تا الگوریتم خوب معرفی شده.

hamid_a
دوشنبه 22 آبان 1385, 00:18 صبح
source تابع line رو نمیشه پیدا کرد؟

hamid_a
سه شنبه 23 آبان 1385, 19:41 عصر
اینجا کسی پیدا نمیشه به ما کمک کنه؟
--------------------
اینجا کسی پیدا نمیشه به ما کمک کنه؟

hamid_a
سه شنبه 23 آبان 1385, 21:58 عصر
اینجا کسی پیدا نمیشه به ما کمک کنه؟

powerboy2988
سه شنبه 23 آبان 1385, 22:05 عصر
هدر فایل graphics.h رو نگاه کن

hamid_a
شنبه 27 آبان 1385, 19:38 عصر
SWAP(X1,X0,TEMP)
چه تابعی هستش؟

پیک سحری
یک شنبه 26 آذر 1385, 23:42 عصر
من سورسی رو که خودم نوشته بودم اینجا کپی کردم
ولی انگار نیست ...
از دوباره
#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);
}
}
//************************************************** *******

ببینم تو دانشجوی دانشکده آب و برق نیستی؟

پیک سحری
یک شنبه 26 آذر 1385, 23:44 عصر
کپی کردم ولی پرانتز ها کمی جابجا شده
از اول ببر آخر بزارشون

پیک سحری
یک شنبه 26 آذر 1385, 23:48 عصر
کپی کردم ولی پرانتز ها کمی جابجا شده
از اول ببر آخر بزارشون
اگر هم جایی رو متوجه نشدی بگو تا برات توضیح بدم

پیک سحری
یک شنبه 26 آذر 1385, 23:51 عصر
من نمی دونم چرا نوشته های من ثبت نمیشن
در هر حال اگه خواستی به من میل بزن تا سورس رو برات بفرستم