void DirwardExtend(bool Anti) { SwapTempGeo(Anti); for (int i = 0; i <= 100; i++) { foreach (var dir in Dir.Vals) { Geodesic_DirwardExtend.Apply(DataGroup.Tiles, DataGroup.TempGeo, DataGroup.Dirward[dir], dir, Output: DataGroup.Temp1); DataGroup.Dirward[dir] = CoreMath.SwapReturn(ref DataGroup.Temp1, DataGroup.Dirward[dir]); } } SwapTempGeo(Anti); }
void CalculatePolarDistance() { for (int i = 0; i < 1024; i++) { Geodesic_PolarDistance.Apply(DataGroup.Geo, DataGroup.GeoInfo, Output: DataGroup.Temp1); CoreMath.Swap(ref DataGroup.Temp1, ref DataGroup.GeoInfo); } Geodesic_SetCircumference.Apply(DataGroup.Geo, DataGroup.GeoInfo, Output: DataGroup.Temp1); CoreMath.Swap(ref DataGroup.Temp1, ref DataGroup.GeoInfo); foreach (var dir in Dir.Vals) { Identity.Apply(DataGroup.Geo, Output: DataGroup.Temp1); CoreMath.Swap(ref DataGroup.Temp1, ref DataGroup.ShiftedGeo); Identity.Apply(DataGroup.GeoInfo, Output: DataGroup.Temp1); CoreMath.Swap(ref DataGroup.Temp1, ref DataGroup.ShiftedGeoInfo); for (int i = 0; i < 256; i++) { Shift.Apply(DataGroup.ShiftedGeo, dir, Output: DataGroup.Temp1); CoreMath.Swap(ref DataGroup.Temp1, ref DataGroup.ShiftedGeo); Shift.Apply(DataGroup.ShiftedGeoInfo, dir, Output: DataGroup.Temp1); CoreMath.Swap(ref DataGroup.Temp1, ref DataGroup.ShiftedGeoInfo); Geodesic_Polarity.Apply(DataGroup.Dirward[dir], DataGroup.Geo, DataGroup.ShiftedGeo, DataGroup.GeoInfo, DataGroup.ShiftedGeoInfo, dir, Output: DataGroup.Temp1); DataGroup.Dirward[dir] = CoreMath.SwapReturn(ref DataGroup.Temp1, DataGroup.Dirward[dir]); } for (int i = 0; i < 50; i++) { Geodesic_FillMissingPolarity.Apply(DataGroup.Dirward[dir], DataGroup.Geo, Output: DataGroup.Temp1); DataGroup.Dirward[dir] = CoreMath.SwapReturn(ref DataGroup.Temp1, DataGroup.Dirward[dir]); } Geodesic_ClearImportance.Apply(DataGroup.Dirward[dir], Output: DataGroup.Temp1); DataGroup.Dirward[dir] = CoreMath.SwapReturn(ref DataGroup.Temp1, DataGroup.Dirward[dir]); } // probably want a larger total shift than 256 eventually, but keep it less than the width of the map (maybe width minus 1, to avoid boundary condition) // set signal on movement data output once polarity is set, then capture signal and store polarity and geo_id }