已知三角纸片三边长为x,y,x
    小四边形长和宽为m,n按45度角度切纸,请问最多能切出多少小四方形?
图片
topic.csdn.net/u/20070702/10/4f3be2c1-8dc0-4c68-947f-7af288e72e27.html?seed=363033226

解决方案 »

  1.   

    file:///D:/test.jpg.....,你的图片也太利害了吧
      

  2.   

    群里没反应,发这儿吧
    //edgeX, edgeY分别为三角形两直角边长, length,width分别为小方块长和宽, angle为剪切角度,必须介于0度~90度
    int cacu(double edgeX, double edgeY, double length, double width, double angle) {
    //如果角度大于90度或者小于0度,或者某一边长为负, 直接返回错误
    if(angle > 90.0 || angle < 0.0 || edgeX < 0.0 || edgeY < 0.0 || length < 0.0 || width < 0.0) {
    return -1;
    }
    //计算时,只和三角形的短直角边有关
    double cEdge = edgeX > edgeY ? edgeY : edgeX;

    //短直角边的邻角是大于45度的
    angle = angle > 45.0 ? angle : 90.0 - angle;
    //有效底边长
    double bottom = cEdge / Math.Cos(angle * Math.PI / 180.0);
    //完整方块数
    int sum = 0;
    //对每一层(条)来说,计算高度为小方块的宽width,而每一层的形状都为一个梯形(能剪的情况下)
    //其上底较下底的递减值为一固定值
    double decValue = width / Math.Tan(angle * Math.PI / 180.0) + width * Math.Tan(angle * Math.PI / 180.0);
    while(bottom - decValue > length) {
    double top = bottom - decValue;
    sum += (int)Math.Floor(top/length);
    bottom = top;
    }
    return sum;
    }