首先,知道两个端点A和B,这两个点可以画一个直线。其次,知道跟AB线的一个角度,从A点画出另外一条直线AC,C是这条线的端点。要求,AB的长度等于AC的长度,求C的坐标。请问怎么计算?

解决方案 »

  1.   

    MS是高中数学~
    解2元方程
    1.AB的模=AC的模
    2.cosBAC=AB*CA/(a*a)a是AB的长度
      

  2.   


    Lr=sqrt((Xb-Xa)*(Xb-Xa)+(Yb-Ya)*(Yb-Ya));
    th=夹角+atg((Yb-Ya)/(Xb-Xa));
    Xc=Xa+Lr*cos(th);
    Yc=Ya+Lr*sin(th);
      

  3.   

    错了一点,改一下:
    Lr=sqrt((Xb-Xa)*(Xb-Xa)+(Yb-Ya)*(Yb-Ya));
    th=夹角+atan((Yb-Ya)/(Xb-Xa));
    Xc=Xa+Lr*cos(th);
    Yc=Ya+Lr*sin(th);
      

  4.   

    按楼上gz_qmc同志的算法试试看,实际上我的项目是在嵌入式平台实现的,没有三角函数可以调用,不知道有没有办法解决?
      

  5.   

    回9楼
    一般如果在单片机上用的话,没有数学公式支持
    速度最快的办法是:将0到2π分成628份,没份0.01;
    建立一个数组分别装每个角度的人工计算值
    float arctan[628];
    float sin[628];
    float cos[628];
    则计算的时候将角度和数组比较取最近的那个值这628是我举例说的,楼主根据个人情况选
    可以选100,也可选1000;
    只不过,数小了快,但精度也差,数大了慢,占地方,但精度高
      

  6.   

    gz_qmc很聪明,刚才跟同事讨论过不用三角函数如何求C点的问题。先做一条AB的垂直线BD,垂直线的斜率就是原来参考线的负倒数,容易算出D点。画出AD,在AD之间分成90份,角度(假设是锐角)跟90度的比例和AD之间的比例就是E点。算出BE线的斜率,在BE上找出C点。不知道这样是不是可以?
      

  7.   

    设A(x1, y1), B(x2, y2), C(x3, y3),AB与AC夹角theta,AC相对AB逆时针旋转为正方向
            +-                                                  -+ 
    x3 =    |  x1 - cos(theta) (x2 - x1) - sin(theta) (y2 - y1)  | 
            |                                                    | 
    y3 =    |  y1 - cos(theta) (y2 - y1) + sin(theta) (x2 - x1)  | 
            +-                                                  -+