func getTotalNumSegms() { local numSegms
numSegms = 0
forall {
numSegms += nseg
}
return numSegms
}
proc interpEachSegmCentreCoordsFromSec3DPointCoords_CalledFromPython() { localobj sec_ref, xSegm_vec, ySegm_vec, zSegm_vec
sec_ref = $o1
xSegm_vec = $o2
ySegm_vec = $o3
zSegm_vec = $o4
sec_ref.sec {
_interpEachSegmCentreCoordsFromSec3DPointCoords(xSegm_vec, ySegm_vec, zSegm_vec)
}
}
// See also: "%NEURONHOME%\lib\python\neuron\__init__.py" -> _get_3d_pt
proc _interpEachSegmCentreCoordsFromSec3DPointCoords() { local numPts, ptIdx, du, u_start localobj xSegm_vec, ySegm_vec, zSegm_vec, x3d_vec, y3d_vec, z3d_vec, u3d_vec, uSegm_vec
xSegm_vec = $o1
ySegm_vec = $o2
zSegm_vec = $o3
numPts = n3d()
x3d_vec = new Vector(numPts)
y3d_vec = new Vector(numPts)
z3d_vec = new Vector(numPts)
u3d_vec = new Vector(numPts)
for ptIdx = 0, numPts - 1 {
x3d_vec.x[ptIdx] = x3d(ptIdx)
y3d_vec.x[ptIdx] = y3d(ptIdx)
z3d_vec.x[ptIdx] = z3d(ptIdx)
u3d_vec.x[ptIdx] = arc3d(ptIdx) / L
}
uSegm_vec = new Vector(nseg)
du = 1 / nseg
u_start = du / 2
uSegm_vec.indgen(u_start, du)
xSegm_vec.interpolate(uSegm_vec, u3d_vec, x3d_vec)
ySegm_vec.interpolate(uSegm_vec, u3d_vec, y3d_vec)
zSegm_vec.interpolate(uSegm_vec, u3d_vec, z3d_vec)
}