获取矩形的四个角的坐标点,矩形左缩进(其他方向缩进类似),矩形顺逆时针旋转并左缩进(2021-04-09)

 

 

 

 

注意:顺时针旋转是朝x轴的上半轴旋转(即角度大于0),逆时针旋转是朝x轴的下半轴旋转(即角度小于0)

    smallest_rectangle2 (BodyConnectedRegions2, BodyRow, BodyColumn, Phi1, BodyLength1, BodyLength2)
*     BodyLength1:=100
*     BodyLength2:=30
    tuple_deg (Phi1, angle)
    angle:=angle-0
    radian := rad(0+angle)
    
    
    gen_rectangle2_contour_xld (BodyRectangle2, BodyRow, BodyColumn, Phi1, BodyLength1, BodyLength2)
    gen_rectangle2_contour_xld (BodyRectangle3, BodyRow, BodyColumn, radian, BodyLength1, BodyLength2)
    
    
    **矩形四个坐标点位置
    tuple_cos (radian, Cos)
    tuple_sin (radian, Sin)
    
    
    dev_set_color('green')
    **判断顺时针还是逆时针旋转(顺时针角度为正,逆时针角度为负)
    if (radian>=0)
        **phi的角度(angle)和边长有关:长的一边为phi的箭头方向(angle在正90度到负90度之间),然后在与x轴形成角度

        **以phi的角度为正方向,判断点在什么方向(左下左上右上右下)
        if (angle>=45 and angle<=90)
            **下面的左下左上右上右下坐标点:以箭头方向来判断(箭头方向(正90度到负90度之间)与X轴的角度)
            LD_X := -BodyLength1*Cos - BodyLength2*Sin
            LD_Y := BodyLength1*Sin - BodyLength2*Cos
            gen_cross_contour_xld(Cross, BodyRow+LD_Y, BodyColumn+LD_X, 6, radian)
            
            LU_X := BodyLength1*Cos - BodyLength2*Sin
            LU_Y := BodyLength1*Sin + BodyLength2*Cos
            gen_cross_contour_xld(Cross1, BodyRow-LU_Y, BodyColumn+LU_X, 6, radian)
              
            RU_X := BodyLength1*Cos + BodyLength2*Sin
            RU_Y := BodyLength1*Sin - BodyLength2*Cos
            gen_cross_contour_xld(Cross2, BodyRow-RU_Y, BodyColumn+RU_X, 6, radian)
             
            RD_X := -BodyLength1*Cos + BodyLength2*Sin
            RD_Y := BodyLength1*Sin + BodyLength2*Cos
            gen_cross_contour_xld(Cross3, BodyRow+RD_Y, BodyColumn+RD_X, 6, radian)
          
          elseif (angle<45 and angle>=0)
            LU_X := -BodyLength1*Cos - BodyLength2*Sin
            LU_Y := BodyLength1*Sin - BodyLength2*Cos
            gen_cross_contour_xld(Cross, BodyRow+LU_Y, BodyColumn+LU_X, 6, radian)
            
            RU_X := BodyLength1*Cos - BodyLength2*Sin
            RU_Y := BodyLength1*Sin + BodyLength2*Cos
            gen_cross_contour_xld(Cross1, BodyRow-RU_Y, BodyColumn+RU_X, 6, radian)
              
            RD_X := BodyLength1*Cos + BodyLength2*Sin
            RD_Y := BodyLength1*Sin - BodyLength2*Cos
            gen_cross_contour_xld(Cross2, BodyRow-RD_Y, BodyColumn+RD_X, 6, radian)
             
            LD_X := -BodyLength1*Cos + BodyLength2*Sin
            LD_Y := BodyLength1*Sin + BodyLength2*Cos
            gen_cross_contour_xld(Cross3, BodyRow+LD_Y, BodyColumn+LD_X, 6, radian)
        endif
        
    else
        
        if (angle>=-45 and angle<0)
            LU_X := -BodyLength1*Cos - BodyLength2*Sin
            LU_Y := BodyLength1*Sin - BodyLength2*Cos
            gen_cross_contour_xld(Cross, BodyRow+LU_Y, BodyColumn+LU_X, 6, radian)
            
            RU_X := BodyLength1*Cos - BodyLength2*Sin
            RU_Y := BodyLength1*Sin + BodyLength2*Cos
            gen_cross_contour_xld(Cross1, BodyRow-RU_Y, BodyColumn+RU_X, 6, radian)
              
            RD_X := BodyLength1*Cos + BodyLength2*Sin
            RD_Y := BodyLength1*Sin - BodyLength2*Cos
            gen_cross_contour_xld(Cross2, BodyRow-RD_Y, BodyColumn+RD_X, 6, radian)
             
            LD_X := -BodyLength1*Cos + BodyLength2*Sin
            LD_Y := BodyLength1*Sin + BodyLength2*Cos
            gen_cross_contour_xld(Cross3, BodyRow+LD_Y, BodyColumn+LD_X, 6, radian)
            
        elseif (angle<-45 and angle>-90)
            RU_X := -BodyLength1*Cos - BodyLength2*Sin
            RU_Y := BodyLength1*Sin - BodyLength2*Cos
            gen_cross_contour_xld(Cross, BodyRow+RU_Y, BodyColumn+RU_X, 6, radian)
        
            RD_X := BodyLength1*Cos - BodyLength2*Sin
            RD_Y := BodyLength1*Sin + BodyLength2*Cos
            gen_cross_contour_xld(Cross1, BodyRow-RD_Y, BodyColumn+RD_X, 6, radian)
          
            LD_X := BodyLength1*Cos + BodyLength2*Sin
            LD_Y := BodyLength1*Sin - BodyLength2*Cos
            gen_cross_contour_xld(Cross2, BodyRow-LD_Y, BodyColumn+LD_X, 6, radian)
           
            LU_X := -BodyLength1*Cos + BodyLength2*Sin
            LU_Y := BodyLength1*Sin + BodyLength2*Cos
            gen_cross_contour_xld(Cross3, BodyRow+LU_Y, BodyColumn+LU_X, 6, radian)
            
        endif
        
        
*         LU_X := -BodyLength1*Cos - BodyLength2*Sin
*         LU_Y := BodyLength1*Sin - BodyLength2*Cos
*         gen_cross_contour_xld(Cross, BodyRow+LU_Y, BodyColumn+LU_X, 6, radian)
    
*         RU_X := BodyLength1*Cos - BodyLength2*Sin
*         RU_Y := BodyLength1*Sin + BodyLength2*Cos
*         gen_cross_contour_xld(Cross1, BodyRow-RU_Y, BodyColumn+RU_X, 6, radian)
       
*         RD_X := BodyLength1*Cos + BodyLength2*Sin
*         RD_Y := BodyLength1*Sin - BodyLength2*Cos
*         gen_cross_contour_xld(Cross2, BodyRow-RD_Y, BodyColumn+RD_X, 6, radian)
        
*         LD_X := -BodyLength1*Cos + BodyLength2*Sin
*         LD_Y := BodyLength1*Sin + BodyLength2*Cos
*         gen_cross_contour_xld(Cross3, BodyRow+LD_Y, BodyColumn+LD_X, 6, radian)
         
        
    endif
            
    dev_display (Image)
    dev_display (BodyRectangle2)
    dev_display (BodyRectangle3)
    dev_display (Cross)
    dev_display (Cross1)
    dev_display (Cross2)
    dev_display (Cross3)
    stop()
    
    value:=-0
    change:=-20
    for value := 1 to change by -1
        if (radian>=0)
            if (angle>=45 and angle<=90)
                
                LD_X := -BodyLength1*Cos - (BodyLength2+value)*Sin
                LD_Y := BodyLength1*Sin - (BodyLength2+value)*Cos
                gen_cross_contour_xld(Cross, BodyRow+LD_Y, BodyColumn+LD_X, 6, radian)
                
                LU_X := BodyLength1*Cos - (BodyLength2+value)*Sin
                LU_Y := BodyLength1*Sin + (BodyLength2+value)*Cos
                gen_cross_contour_xld(Cross1, BodyRow-LU_Y, BodyColumn+LU_X, 6, radian)
                  
                RU_X := BodyLength1*Cos + BodyLength2*Sin
                RU_Y := BodyLength1*Sin - BodyLength2*Cos
                gen_cross_contour_xld(Cross2, BodyRow-RU_Y, BodyColumn+RU_X, 6, radian)
                 
                RD_X := -BodyLength1*Cos + BodyLength2*Sin
                RD_Y := BodyLength1*Sin + BodyLength2*Cos
                gen_cross_contour_xld(Cross3, BodyRow+RD_Y, BodyColumn+RD_X, 6, radian)
                
                gen_region_line (LeftHeight1, BodyRow-LU_Y, BodyColumn+LU_X, BodyRow+LD_Y, BodyColumn+LD_X)
                gen_region_line (DownWidth1, BodyRow+LD_Y, BodyColumn+LD_X, BodyRow+RD_Y, BodyColumn+RD_X)
                gen_region_line (UpWidth1, BodyRow-LU_Y, BodyColumn+LU_X, BodyRow-RU_Y, BodyColumn+RU_X)
                gen_region_line (RightHeight1, BodyRow-RU_Y, BodyColumn+RU_X, BodyRow+RD_Y, BodyColumn+RD_X)
                dev_display (Image)
                dev_display (LeftHeight1)
                dev_display (DownWidth1)
                dev_display (UpWidth1)
                dev_display (RightHeight1)
                dev_display (Cross)
                dev_display (Cross1)
                dev_display (Cross2)
                dev_display (Cross3)
                    
            elseif (angle<45 and angle>=0)
                LU_X := -(BodyLength1+value)*Cos - BodyLength2*Sin
                LU_Y := (BodyLength1+value)*Sin - BodyLength2*Cos
                gen_cross_contour_xld(Cross, BodyRow+LU_Y, BodyColumn+LU_X, 6, radian)
                
                RU_X := BodyLength1*Cos - BodyLength2*Sin
                RU_Y := BodyLength1*Sin + BodyLength2*Cos
                gen_cross_contour_xld(Cross1, BodyRow-RU_Y, BodyColumn+RU_X, 6, radian)
                  
                RD_X := BodyLength1*Cos + BodyLength2*Sin
                RD_Y := BodyLength1*Sin - BodyLength2*Cos
                gen_cross_contour_xld(Cross2, BodyRow-RD_Y, BodyColumn+RD_X, 6, radian)
                 
                LD_X := -(BodyLength1+value)*Cos + BodyLength2*Sin
                LD_Y := (BodyLength1+value)*Sin + BodyLength2*Cos
                gen_cross_contour_xld(Cross3, BodyRow+LD_Y, BodyColumn+LD_X, 6, radian)
                
                gen_region_line (LeftHeight1, BodyRow+LU_Y, BodyColumn+LU_X, BodyRow+LD_Y, BodyColumn+LD_X)
                gen_region_line (DownWidth1, BodyRow+LD_Y, BodyColumn+LD_X, BodyRow-RD_Y, BodyColumn+RD_X)
                gen_region_line (UpWidth1, BodyRow+LU_Y, BodyColumn+LU_X, BodyRow-RU_Y, BodyColumn+RU_X)
                gen_region_line (RightHeight1, BodyRow-RU_Y, BodyColumn+RU_X, BodyRow-RD_Y, BodyColumn+RD_X)
                dev_display (Image)
                dev_display (LeftHeight1)
                dev_display (DownWidth1)
                dev_display (UpWidth1)
                dev_display (RightHeight1)
                dev_display (Cross)
                dev_display (Cross1)
                dev_display (Cross2)
                dev_display (Cross3)
                
                
            endif
        
        else
        
            if (angle>=-45 and angle<0)
                LU_X := -(BodyLength1+value)*Cos - BodyLength2*Sin
                LU_Y := (BodyLength1+value)*Sin - BodyLength2*Cos
                gen_cross_contour_xld(Cross, BodyRow+LU_Y, BodyColumn+LU_X, 6, radian)
                
                RU_X := BodyLength1*Cos - BodyLength2*Sin
                RU_Y := BodyLength1*Sin + BodyLength2*Cos
                gen_cross_contour_xld(Cross1, BodyRow-RU_Y, BodyColumn+RU_X, 6, radian)
                  
                RD_X := BodyLength1*Cos + BodyLength2*Sin
                RD_Y := BodyLength1*Sin - BodyLength2*Cos
                gen_cross_contour_xld(Cross2, BodyRow-RD_Y, BodyColumn+RD_X, 6, radian)
                 
                LD_X := -(BodyLength1+value)*Cos + BodyLength2*Sin
                LD_Y := (BodyLength1+value)*Sin + BodyLength2*Cos
                gen_cross_contour_xld(Cross3, BodyRow+LD_Y, BodyColumn+LD_X, 6, radian)
                
                gen_region_line (LeftHeight1, BodyRow+LU_Y, BodyColumn+LU_X, BodyRow+LD_Y, BodyColumn+LD_X)
                gen_region_line (DownWidth1, BodyRow+LD_Y, BodyColumn+LD_X, BodyRow-RD_Y, BodyColumn+RD_X)
                gen_region_line (UpWidth1, BodyRow+LU_Y, BodyColumn+LU_X, BodyRow-RU_Y, BodyColumn+RU_X)
                gen_region_line (RightHeight1, BodyRow-RU_Y, BodyColumn+RU_X, BodyRow-RD_Y, BodyColumn+RD_X)
                dev_display (Image)
                dev_display (LeftHeight1)
                dev_display (DownWidth1)
                dev_display (UpWidth1)
                dev_display (RightHeight1)
                dev_display (Cross)
                dev_display (Cross1)
                dev_display (Cross2)
                dev_display (Cross3)
                
            elseif (angle<-45 and angle>=-90)
                RU_X := -BodyLength1*Cos - BodyLength2*Sin
                RU_Y := BodyLength1*Sin - BodyLength2*Cos
                gen_cross_contour_xld(Cross, BodyRow+RU_Y, BodyColumn+RU_X, 6, radian)
            
                RD_X := BodyLength1*Cos - BodyLength2*Sin
                RD_Y := BodyLength1*Sin + BodyLength2*Cos
                gen_cross_contour_xld(Cross1, BodyRow-RD_Y, BodyColumn+RD_X, 6, radian)
             
                LD_X := BodyLength1*Cos + (BodyLength2+value)*Sin
                LD_Y := BodyLength1*Sin - (BodyLength2+value)*Cos
                gen_cross_contour_xld(Cross2, BodyRow-LD_Y, BodyColumn+LD_X, 6, radian)
              
                LU_X := -BodyLength1*Cos + (BodyLength2+value)*Sin
                LU_Y := BodyLength1*Sin + (BodyLength2+value)*Cos
                gen_cross_contour_xld(Cross3, BodyRow+LU_Y, BodyColumn+LU_X, 6, radian)
                
                
                gen_region_line (LeftHeight1, BodyRow+LU_Y, BodyColumn+LU_X, BodyRow-LD_Y, BodyColumn+LD_X)
                gen_region_line (DownWidth1, BodyRow-LD_Y, BodyColumn+LD_X, BodyRow-RD_Y, BodyColumn+RD_X)
                gen_region_line (UpWidth1, BodyRow+LU_Y, BodyColumn+LU_X, BodyRow+RU_Y, BodyColumn+RU_X)
                gen_region_line (RightHeight1, BodyRow+RU_Y, BodyColumn+RU_X, BodyRow-RD_Y, BodyColumn+RD_X)
                dev_display (Image)
                dev_display (LeftHeight1)
                dev_display (DownWidth1)
                dev_display (UpWidth1)
                dev_display (RightHeight1)
                dev_display (Cross)
                dev_display (Cross1)
                dev_display (Cross2)
                dev_display (Cross3)
                
            endif
        endif
    endfor
    

stop()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值