Source code for tyssue.geometry.multisheetgeometry
from .sheet_geometry import SheetGeometry
[docs]class MultiSheetGeometry:
"""Geometry class for stacked 2D sheets"""
[docs] @classmethod
def update_all(cls, msheet):
msheet.update_interpolants()
for sheet in msheet:
SheetGeometry.update_dcoords(sheet)
SheetGeometry.update_ucoords(sheet)
SheetGeometry.update_length(sheet)
SheetGeometry.update_centroid(sheet)
SheetGeometry.update_normals(sheet)
SheetGeometry.update_areas(sheet)
SheetGeometry.update_perimeters(sheet)
cls.update_heights(msheet)
[docs] @staticmethod
def update_heights(msheet):
msheet[0].vert_df["height"] = (
msheet[0].vert_df["z"] - msheet[0].vert_df["basal_shift"]
)
# Here we use basal_shift to impose apical constrains
msheet[-1].vert_df["depth"] = (
msheet[-1].vert_df["basal_shift"] - msheet[-1].vert_df["z"]
)
for lower, upper in zip(msheet.interpolants[:-1], msheet[1:]):
upper.vert_df["height"] = upper.vert_df["z"] - lower(
upper.vert_df["x"], upper.vert_df["y"]
)
for lower, upper in zip(msheet[:-1], msheet.interpolants[1:]):
lower.vert_df["depth"] = (
upper(lower.vert_df["x"], lower.vert_df["y"]) - lower.vert_df["z"]
)