c语言 坐标

c语言 坐标,第1张

#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驱动后可以不需要.BGI文件的支持运行 */

initgraph(&gd, &gm, "")

}

void DrawCoord()

void Drawstg()

void Drawcurve()

int main(void)

{

initgr()/* BGI初始化 */

DrawCoord()

Drawstg()

Drawcurve()

getch()/* 暂停一下,看看前面绘图代码的运行结果 */

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=0i<17i++)

{

line(x+5,y,x,y)

y-=20

}

x=50,y=400

for(i=0i<26i++)

{

line(x,y-5,x,y)

x+=20

}

}

void Drawcurve()/*画图示例*/

{

line(50,400,500,400-250)

}

因为你没有分数,我就不写程序了,我就只给你说过方向

如果是C语言的画,画直线的头文件是包含在#include"graphics.h"中

现在,我们来定义4个变量x1,y1,x2,y2

我现在假定你的a b数组是相等的,并且长度已知为length

那么 我用for循环

for(int i=0i<length-1i++)

{

x1=a[i]y1=b[i]

x2=a[i+1]y2=b[i+1]

line(x1,y1,x2,y2)

}

完成画图

希望以上对你有帮助

c语言本身是无法调整的,但是如果为了使用原点为左下角的坐标系完全可以用坐标变

换实现,你只需要自己写一个自己的直线函数,即参数为以左下角为原点的直线的端点

的直线函数。并在函数中作一次坐标变换就可以了,举个例子:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

/*直线函数*/

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()

/* 这是原来的直线函数*/

line(0, 0, xmax, ymax)

/* 这是变换后的直线函数*/

myline(0,0,xmax,ymax)

/* clean up */

getch()

closegraph()

return 0

}

不过不推荐使用这种方法,其实,坐标原点在哪里都是一样的,用习惯就好了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11962192.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存