参数 x1,y1,r1,
     x2,y2,r2返回四边形四个顶点坐标

解决方案 »

  1.   

    dx=x1-x2
    dy=y1-y2
    h=sqr(dx*dx+dy*dy)sin=dy/hcos=dx/h
    剩下的就是Ax= x1+r1*sin
    Ay=y1+r1*con
    ...
      

  2.   

    BOOL CIsoscelesTrapeziumDlg::OnInitDialog() // TODO: Add extra initialization here
    CPoint p1(100,100);
    CPoint p2(150,50);
    int    r1=80;
    int    r2=40;
    double dx=p2.x-p1.x;
    double dy=p2.y-p1.y;
    if(dy<0) dy=-dy;
    double h=sqrt(dx*dx+dy*dy);
    double sin=dy/h;
    double cos=dx/h;
    //CPoint m_point[4];
    //CCW
    m_point[0].x=(int)(p1.x-r1*sin);
    m_point[0].y=(int)(p1.y-r1*cos);
    //
    m_point[1].x=(int)(p1.x+r1*sin);
    m_point[1].y=(int)(p1.y+r1*cos);
    //
    m_point[3].x=(int)(p2.x-r2*sin);
    m_point[3].y=(int)(p2.y-r2*cos);
    //
    m_point[2].x=(int)(p2.x+r2*sin);
    m_point[2].y=(int)(p2.y+r2*cos);
    //
    void CIsoscelesTrapeziumDlg::OnPaint()  else
    {
    CPaintDC dc(this); // device context for painting
    dc.Polygon(m_point,4);
    // CDialog::OnPaint();
    }