(* ::Package:: *) (* ::Subsubsection:: *) (*Initialization Code*) (* ::Input::Initialization:: *) regularCausalGraphPlot[layerCount_:9,{lineDensityHorizontal_:1,lineDensityVertical_:1},verticalEdgeDensity_Real:0.,{tanHorizontal_:0.0,tanVertical_:0.0},offset:{_,_}:{0,0},lineStyles:{_,_}:{Red,Red},transform_:(#&)]:=DirectedGraph[Flatten[Table[{v[{i+1,j}]->v[{i,j}],If[i{True,False}],v[{i+2,j+1}]->v[{i,j}],Nothing],v[{i+1,j+1}]->v[{i,j}]},{i,layerCount-1},{j,i}]],VertexCoordinates->Catenate[Table[v[{i,j}]->transform[{2(#2-#1/2),#1}&@@{i,j}],{i,layerCount},{j,i}]],VertexSize->.33,VertexStyle->Directive[Directive[Opacity[.7],Hue[0.14, 0.34, 1.]],EdgeForm[Directive[Opacity[0.4],Hue[0.09, 1., 0.91]]]],VertexShapeFunction->"Rectangle",Epilog->foliationLines[{lineDensityHorizontal,lineDensityVertical},{tanHorizontal,tanVertical},offset,lineStyles,transform]] (* ::Input::Initialization:: *) foliationLines[{lineDensityHorizontal_:1,lineDensityVertical_:1},{tanHorizontal_:0.0,tanVertical_:0.0},offset:{_,_}:{0,0},lineStyles:{_,_}:{Red,Red},transform_:(#&)]:={If[lineDensityHorizontal!=0,Style[Table[Line[transform/@{{-100+First@offset,k-100tanHorizontal+Last@offset},{100+First@offset,k+100tanHorizontal+Last@offset}}],{k,-100.5,100.5,1/lineDensityHorizontal}],First@lineStyles],{}],If[lineDensityVertical!=0,Style[Table[Line[transform/@{{k-100tanVertical+First@offset,-100+Last@offset},{k+100tanVertical+First@offset,100+Last@offset}}],{k,-100.5,100.5,1/lineDensityVertical}],Last@lineStyles],{}]} (* ::Subsubsection:: *) (*Final Code*) (* ::Input:: *) (*(*https://www.wolframcloud.com/obj/wolframphysics/TechPaper-Programs/Section-08/regularCausalGraphPlot.wl*)*) (* ::Input:: *) (*CloudGet["https://wolfr.am/KVkTxvC5"];*)