11 std::vector<GeometryValueType> result;
12 result.reserve(point.size());
13 for (uint_fast64_t objIndex = 0; objIndex < objectives.size(); ++objIndex) {
14 auto const& obj = objectives[objIndex];
16 if (obj.considersComplementaryEvent) {
17 result.push_back(storm::utility::one<GeometryValueType>() - point[objIndex]);
19 result.push_back(point[objIndex]);
22 if (obj.considersComplementaryEvent) {
23 result.push_back(storm::utility::one<GeometryValueType>() + point[objIndex]);
25 result.push_back(-point[objIndex]);
35 if (polytope->isEmpty()) {
38 if (polytope->isUniversal()) {
41 uint_fast64_t numObjectives = objectives.size();
42 std::vector<std::vector<GeometryValueType>> transformationMatrix(numObjectives,
43 std::vector<GeometryValueType>(numObjectives, storm::utility::zero<GeometryValueType>()));
44 std::vector<GeometryValueType> transformationVector;
45 transformationVector.reserve(numObjectives);
46 for (uint_fast64_t objIndex = 0; objIndex < numObjectives; ++objIndex) {
47 auto const& obj = objectives[objIndex];
49 if (obj.considersComplementaryEvent) {
50 transformationMatrix[objIndex][objIndex] = -storm::utility::one<GeometryValueType>();
51 transformationVector.push_back(storm::utility::one<GeometryValueType>());
53 transformationMatrix[objIndex][objIndex] = storm::utility::one<GeometryValueType>();
54 transformationVector.push_back(storm::utility::zero<GeometryValueType>());
57 if (obj.considersComplementaryEvent) {
58 transformationMatrix[objIndex][objIndex] = storm::utility::one<GeometryValueType>();
59 transformationVector.push_back(storm::utility::one<GeometryValueType>());
61 transformationMatrix[objIndex][objIndex] = -storm::utility::one<GeometryValueType>();
62 transformationVector.push_back(storm::utility::zero<GeometryValueType>());
66 return polytope->affineTransformation(transformationMatrix, transformationVector);