十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
c語言本身是無法調(diào)整的,但是如果為了使用原點為左下角的坐標系完全可以用坐標變

成都創(chuàng)新互聯(lián)專注于澄邁企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,電子商務商城網(wǎng)站建設。澄邁網(wǎng)站建設公司,為澄邁等地區(qū)提供建站服務。全流程按需網(wǎng)站建設,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
換實現(xiàn),你只需要自己寫一個自己的直線函數(shù),即參數(shù)為以左下角為原點的直線的端點
的直線函數(shù)。并在函數(shù)中作一次坐標變換就可以了,舉個例子:
#include graphics.h
#include stdlib.h
#include stdio.h
#include conio.h
/*直線函數(shù)*/
void myline(int x1, int y1, int x2, int y2)
{
int ymax = getmaxy(); /*獲得屏幕最低點的y坐標*/
y1 = ymax - y1; /*坐標變換*/
y2 = ymax - y2;
line(x1, y1, x2, y2);
}
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int xmax, ymax;
/* initialize graphics and local variables */
initgraph(gdriver, gmode, "h:\\work\\tc3\\bgi");
/* read result of initialization */
errorcode = graphresult();
/* an error occurred */
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
setcolor(getmaxcolor());
xmax = getmaxx();
ymax = getmaxy();
/* 這是原來的直線函數(shù)*/
line(0, 0, xmax, ymax);
/* 這是變換后的直線函數(shù)*/
myline(0,0,xmax,ymax);
/* clean up */
getch();
closegraph();
return 0;
}
不過不推薦使用這種方法,其實,坐標原點在哪里都是一樣的,用習慣就好了。
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */
registerbgidriver(EGAVGA_driver);/* 注冊BGI驅(qū)動后可以不需要.BGI文件的支持運行 */
initgraph(gd, gm, "");
}
void DrawCoord();
void Drawstg();
void Drawcurve();
int main(void)
{
initgr(); /* BGI初始化 */
DrawCoord();
Drawstg();
Drawcurve();
getch(); /* 暫停一下,看看前面繪圖代碼的運行結(jié)果 */
closegr(); /* 恢復TEXT屏幕模式 */
return 0;
}
void DrawCoord() /*畫坐標系*/
{
line(50,40,50,400); /*y軸*/
line(50,400,600,400); /*x軸*/
line(50,40,45,50); /*箭頭*/
line(50,40,55,50);
line(600,400,590,395);
line(600,400,590,405);
outtextxy(35,45,"y");
outtextxy(590,410,"x");
outtextxy(40,410,"O");
}
void Drawstg() /*畫標尺*/
{
int x,y,i;
x=50,y=400;
for(i=0;i17;i++)
{
line(x+5,y,x,y);
y-=20;
}
x=50,y=400;
for(i=0;i26;i++)
{
line(x,y-5,x,y);
x+=20;
}
}
void Drawcurve()/*畫圖示例*/
{
line(50,400,500,400-250);
}
此題把數(shù)學問題轉(zhuǎn)化為用C語言描述即可,很多畫圖問題可以使用這種方法。
假設屏幕左上角為坐標軸原點
也就是把我們的屏幕當作第一象限時,代碼如下
#include?stdio.h
#define??MAX???30??//?選定曲線要顯示的范圍,因為一次函數(shù)是一條直線,所以它的顯示范圍無窮
int?main()
{
int?x,?y;
for?(y?=?0;?y??MAX;?y++)??//?因為我們的光標是向下,向右增長。這里設定y為縱坐標
{
for?(x?=?0;?x??MAX;?x++)
{
if?(y?==?2?*?x?+?5)
{
printf("*");??
}
else
{
printf("?");??//?空格,不滿足y=2x+5的點
}
}
printf("\n");?//?x軸已經(jīng)到顯示范圍,所以需要換行。
}
return?0;
}
2. 更換坐標軸原點顯示
#include?stdio.h
#define??MAX???30??//?選定曲線要顯示的范圍,因為一次函數(shù)是一條直線,所以它的顯示范圍無窮
int?main()
{
int?x,?y;
for?(y?=?30;?y?=?0;?y--)??
{
for?(x?=?0;?x??MAX;?x++)
{
if?(y?==?2?*?x?+?5)
{
printf("*");??
}
else
{
printf("?");??//?空格,不滿足y=2x+5的點
}
}
printf("\n");?//?x軸已經(jīng)到顯示范圍,所以需要換行。
}
return?0;
}