你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 04:56:51 +08:00
Added bounds checking for build_voxels_from_array
这个提交包含在:
@@ -668,15 +668,33 @@ cpdef void build_voxels_from_array(int xs, int ys, int zs, np.uint16_t[:, :, ::1
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
cdef Py_ssize_t i, j, k
|
cdef Py_ssize_t i, j, k
|
||||||
cdef int nx, ny, nz, numID
|
cdef int xf, yf, zf, numID
|
||||||
|
|
||||||
nx = data.shape[0]
|
# Set bounds to domain if they outside
|
||||||
ny = data.shape[1]
|
if xs < 0:
|
||||||
nz = data.shape[2]
|
xs = 0
|
||||||
|
if xs + data.shape[0] >= solid.shape[0]:
|
||||||
|
xf = solid.shape[0] - 1
|
||||||
|
else:
|
||||||
|
xf = xs + data.shape[0]
|
||||||
|
|
||||||
for i in range(nx):
|
if ys < 0:
|
||||||
for j in range(ny):
|
ys = 0
|
||||||
for k in range(nz):
|
if ys + data.shape[1] >= solid.shape[1]:
|
||||||
numID = data[i, j, k]
|
yf = solid.shape[1] - 1
|
||||||
build_voxel(i + xs, j + ys, k + zs, numID, numID, numID, numID, False, solid, rigidE, rigidH, ID)
|
else:
|
||||||
|
yf = ys + data.shape[1]
|
||||||
|
|
||||||
|
if zs < 0:
|
||||||
|
zs = 0
|
||||||
|
if zs + data.shape[2] >= solid.shape[2]:
|
||||||
|
zf = solid.shape[2] - 1
|
||||||
|
else:
|
||||||
|
zf = zs + data.shape[2]
|
||||||
|
|
||||||
|
for i in range(xs, xf):
|
||||||
|
for j in range(ys, yf):
|
||||||
|
for k in range(zs, zf):
|
||||||
|
numID = data[i - xs, j - ys, k - zs]
|
||||||
|
build_voxel(i, j, k, numID, numID, numID, numID, False, solid, rigidE, rigidH, ID)
|
||||||
|
|
||||||
|
在新工单中引用
屏蔽一个用户