在VC中,单文档下,任意画一条直线,怎么求他的 斜率啊?哪位有代码,谢谢???

解决方案 »

  1.   

     我想的是用CPoint类对象,里面有坐标信息。但是这样的话很不准确,因为坐标是int型的,不能带小数。现在我真不知道该怎么办了。
      

  2.   

    那可以有其他方法没 ,比如不用CPoint类
      

  3.   

    double GetSlope(CPoint pt1, CPoint pt2)
    {
    if(pt2.x == pt1.x)
    return 0; return (pt2.y - pt1.y)/(double)(pt2.x - pt1.x);
    }斜率是不是这样定义的,我不是很确定了。
      

  4.   

    实际使用中,肯定放大缩小的说法,比如在autocad中画线的时候,都将图形放大了进行操作,如果这样操作,可以算出来带小数的坐标。
      

  5.   

    我的观点:
    1、  鼠标记录的点坐标肯定是CPoint数据,也就是int型,你可以自己建一个类
         Class myPoint 
        {
          public:
              float x ;
              float y ;
              float error;
        }2、 每次记录鼠标位置,保存两种数据,一种CPoint , 一种myPoint , 当用于绘制所画直线时,使用CPoint数据,当用于计算斜率时,使用myPoint数据(如果用于精密计算方面,理论上应该记录的是myPoint坐标,LZ所得的CPoint坐标是转换后的结果)3、 斜率可能存在,也可能不存在,排除特殊情况
      

  6.   

    斜率公式:(pt2.y-pt1.y)/(pt2.x-pt1.x); 
    但要注意:pt2.x-pt1.x很小的情况,也就是基本上与Y轴平行的直线,斜率无穷大。
      

  7.   

    你可以用gdiplus下面的类,它里面的对象都是建立在浮点数的基础上的
    实际上你用cpoint 也可以解决问题了,因为起始两个点的位置是精确的,只是如果两个整数直接除得到的也是整数,可以先把它们强制转换为浮点数,然后就可以了。