diff --git a/data/tasks/volume/debristasks/generate_single_debris_volume.task b/data/tasks/volume/debristasks/generate_single_debris_volume.task index c28bb175f3..ead025c594 100644 --- a/data/tasks/volume/debristasks/generate_single_debris_volume.task +++ b/data/tasks/volume/debristasks/generate_single_debris_volume.task @@ -1,10 +1,9 @@ + return {{ Type = "GenerateDebrisVolumeTask", Dimensions = {32, 32, 32}, - LowerDomainBound = {-0.5, -0.5, -0.5}, - UpperDomainBound = {0.5, 0.5, 0.5}, - InputPath = "C:/Users/Jonathan/Documents/exjobb/OpenSpace/sync/url/satellite_tle_data_IndianASATtestDebris(10018654073589624780)/files/2019-006.txt", StartTime = "2018-05-04T00:00:00", + InputPath = "${SYNC}/url/satellite_tle_data_Iridium33Debris(10708435089634408069)/files/iridium-33-debris.txt", RawVolumeOutput = "${DATA}/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated/singleDebris.rawvolume", DictionaryOutput = "${DATA}/assets/scene/solarsystem/planets/earth/satellites/debris/volume/generated/singleDebris.dictionary" }} diff --git a/modules/space/tasks/generatedebrisvolumetask.cpp b/modules/space/tasks/generatedebrisvolumetask.cpp index bb93cc15e1..8959d73288 100644 --- a/modules/space/tasks/generatedebrisvolumetask.cpp +++ b/modules/space/tasks/generatedebrisvolumetask.cpp @@ -22,6 +22,7 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ #include +#include #include #include @@ -49,10 +50,11 @@ namespace { constexpr const char* KeyDictionaryOutput = "DictionaryOutput"; constexpr const char* KeyDimensions = "Dimensions"; constexpr const char* KeyStartTime = "StartTime"; - //constexpr const char* KeyEndTime = "EndTime"; + // constexpr const char* KeyEndTime = "EndTime"; constexpr const char* KeyInputPath = "InputPath"; - constexpr const char* KeyLowerDomainBound = "LowerDomainBound"; - constexpr const char* KeyUpperDomainBound = "UpperDomainBound"; + // constexpr const char* KeyLowerDomainBound = "LowerDomainBound"; + // constexpr const char* KeyUpperDomainBound = "UpperDomainBound"; + constexpr const char* _loggerCat = "SpaceDebris"; } @@ -393,9 +395,9 @@ std::vector generatePositions(int numberOfPositions) { std::vector positions; float radius = 700000; // meter - float degreeStep = 360 / numberOfPositions; + int degreeStep = static_cast(360 / numberOfPositions); - for(int i=0 ; i<= 360 ; i == degreeStep){ + for(int i=0 ; i<= 360 ; i += degreeStep){ glm::dvec3 singlePosition = glm::dvec3(radius* sin(i), radius*cos(i), 0.0); positions.push_back(singlePosition); } @@ -431,10 +433,9 @@ int getIndexFromPosition(glm::dvec3 position, glm::uvec3 dim, float maxApogee){ ,position.y + maxApogee ,position.z + maxApogee); - glm::vec3 coordinateIndex = glm::vec3(newPosition.x * dim.x, - newPosition.y * dim.y, - newPosition.z * dim.z) / (2*(maxApogee + epsilon)); - + glm::uvec3 coordinateIndex = glm::uvec3(static_cast(newPosition.x * dim.x / (2*(maxApogee + epsilon))), + static_cast(newPosition.y * dim.y / (2 * (maxApogee + epsilon))), + static_cast(newPosition.z * dim.z / (2 * (maxApogee + epsilon)))); return coordinateIndex.z * (dim.x * dim.y) + coordinateIndex.y * dim.x + coordinateIndex.x; } @@ -462,12 +463,14 @@ GenerateDebrisVolumeTask::GenerateDebrisVolumeTask(const ghoul::Dictionary& dict _dimensions = dictionary.value(KeyDimensions); _startTime = dictionary.value(KeyStartTime); //_endTime = dictionary.value(KeyEndTime); + // since _inputPath is past from task, // there will have to be either one task per dataset, // or you need to combine the datasets into one file. _inputPath = dictionary.value(KeyInputPath); - _lowerDomainBound = dictionary.value(KeyLowerDomainBound); - _upperDomainBound = dictionary.value(KeyUpperDomainBound); + + //_lowerDomainBound = dictionary.value(KeyLowerDomainBound); + //_upperDomainBound = dictionary.value(KeyUpperDomainBound); _TLEDataVector = {}; @@ -498,7 +501,12 @@ void GenerateDebrisVolumeTask::perform(const Task::ProgressCallback& progressCal //std::vector generatedPositions = generatePositions(numberOfPoints); const int size = _dimensions.x *_dimensions.y *_dimensions.z; - int *densityArrayp = new int[size](); + int *densityArrayp = new int[size]; + for (int i = 0; i < size; ++i) { + densityArrayp[i] = 0; + } + LINFO(fmt::format("densityArray: {} ", densityArrayp[0])); + float maxApogee = getMaxApogee(_TLEDataVector); //densityArrayp = mapDensityToVoxels(densityArrayp, generatedPositions, _dimensions, maxApogee); densityArrayp = mapDensityToVoxels(densityArrayp, startPositionBuffer, _dimensions, maxApogee); @@ -588,7 +596,7 @@ void GenerateDebrisVolumeTask::perform(const Task::ProgressCallback& progressCal std::fstream f(_dictionaryOutputPath, std::ios::out); f << "return " << metadataString; f.close(); - + delete[] densityArrayp; } documentation::Documentation GenerateDebrisVolumeTask::documentation() { @@ -615,6 +623,12 @@ documentation::Documentation GenerateDebrisVolumeTask::documentation() { Optional::No, "Input path to the TLE-data", }, + { + KeyStartTime, + new StringAnnotationVerifier("A valid timestamp"), + Optional::No, + "First timestep of volume", + }, { KeyRawVolumeOutput, new StringAnnotationVerifier("A valid filepath"),