在Python中找到3D图形的表面区域

假设我们有一个N * M矩阵A,这是3D图形的表示。建筑物在(i,j)点的高度为A [i] [j]。我们必须找到图的表面积。

因此,如果输入像N = 3,M = 3,A = [[1、4、5],[3、3、4],[1、3、5]],那么输出将为72。

为了解决这个问题,我们将遵循以下步骤-

  • res:= 0

  • 对于0到N范围内的i,执行

    • up_side:= 0

    • left_side:= 0

    • 如果我> 0,那么

    • 如果j> 0,则

    • res:= res + | array [i] [j]-up_side | + | array [i] [j]-left_side |

    • 如果我与N-1相同,则

    • 如果j与M-1相同,则

    • up_side:= array [i-1,j]

    • left_side:= array [i,j-1]

    • res:= res + array [i,j]

    • res:= res + array [i,j]

    • 对于0到M范围内的j,执行

    • 分辨率:=分辨率+ N * M * 2

    • 返回资源

    示例

    让我们看下面的实现以更好地理解-

    M = 3
    N = 3
    def get_surface_area(array):
       res = 0
       for i in range(N):
          for j in range(M):
             up_side = 0
             left_side = 0
             if (i > 0):
                up_side = array[i - 1][j]
             if (j > 0):
                left_side = array[i][j - 1]
             res += abs(array[i][j] - up_side)+abs(array[i][j] - left_side)
             if (i == N - 1):
                res += array[i][j]
             if (j == M - 1):
                res += array[i][j]
       res += N * M * 2
       return res
    array = [[1, 4, 5],[3, 3, 4],[1, 3, 5]]
    print(get_surface_area(array))

    输入值

    [[1, 4, 5],[3, 3, 4],[1, 3, 5]]

    输出结果

    72
    猜你喜欢