使用XDrawLine和sin绘制直线,cos

时间:2013-12-10 18:50:14

标签: gcc geometry xlib

我正在尝试在屏幕上绘制类似坐标系的东西。我有一个中心,四条线从它开始。垂直线是直线,水平线是直线,右手(划分第一和第二象限)。但左手的水平线不是连续的 - 它在线的一半处向上一个像素。我不明白这一点,因为左边的水平线与右边的轴对称。 线条绘图是用sin,cos和pi完成的,我定义了超过十位数。

以下是代码:

int Mx=300;
int My=300;
/* vertical line*/
XDrawLine(dis,win,gc, Mx, My, Mx+sin(0)*250   , My+cos(0)*250);//line down
XDrawLine(dis,win,gc, Mx, My, Mx-sin(0)*250   , My-cos(0)*250);//line up
/*horizontal line */
XDrawLine(dis,win,gc, Mx, My ,Mx+sin(pi/2)*250, My+cos(pi/2)*250);//line right 
XDrawLine(dis,win,gc, Mx, My, Mx-sin(pi/2)*250, My-cos(pi/2)*250);//line left 

以下是我的意思 - axis of abscissas

的示例图片

X Window系统如何定位像素 - 它可能因显示而异吗?

1 个答案:

答案 0 :(得分:2)

Xlib没有任何问题,它只是一个舍入错误。

My-cos(pi/2)*250

当转换为int时,计算结果为299.