我正在尝试在屏幕上绘制类似坐标系的东西。我有一个中心,四条线从它开始。垂直线是直线,水平线是直线,右手(划分第一和第二象限)。但左手的水平线不是连续的 - 它在线的一半处向上一个像素。我不明白这一点,因为左边的水平线与右边的轴对称。 线条绘图是用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
以下是我的意思 -
的示例图片X Window系统如何定位像素 - 它可能因显示而异吗?
答案 0 :(得分:2)
Xlib没有任何问题,它只是一个舍入错误。
My-cos(pi/2)*250
当转换为int时,计算结果为299.