2984 |
|
|
2985 |
|
|
2986 |
void showObject(const Object& object, const size_t& level, |
void showObject(const Object& object, const size_t& level, |
2987 |
std::stack<int> objectStack, const size_t& numero) |
std::stack<std::string>& objectStack) |
2988 |
{ |
{ |
2989 |
for (size_t i=0; i<level; ++i) |
for (size_t i=0; i<level; ++i) |
2990 |
std::cout << "=="; |
std::cout << "=="; |
2995 |
size_t j=0; |
size_t j=0; |
2996 |
for(Union::const_iterator i = U.begin(); |
for(Union::const_iterator i = U.begin(); |
2997 |
i != U.end(); ++i, ++j) { |
i != U.end(); ++i, ++j) { |
2998 |
if (j>1) { |
showObject((*(*i)), level+1, objectStack); |
2999 |
|
if (j>0) { |
3000 |
for (size_t l=0; l<level; ++l) |
for (size_t l=0; l<level; ++l) |
3001 |
std::cout << "=="; |
std::cout << "=="; |
3002 |
std::cout << "Calcule l'union\n"; |
|
3003 |
|
std::string u = "union("; |
3004 |
|
std::cerr << "Calcule l'union de " << objectStack.top(); |
3005 |
|
u+=objectStack.top(); |
3006 |
|
objectStack.pop(); |
3007 |
|
u+=" et de "; |
3008 |
|
std::cerr << " et de " << objectStack.top() << '\n'; |
3009 |
|
u+=objectStack.top(); |
3010 |
|
objectStack.pop(); |
3011 |
|
|
3012 |
|
u+=")"; |
3013 |
|
objectStack.push(u); |
3014 |
} |
} |
|
showObject((*(*i)), level+1, objectStack, numero+1); |
|
3015 |
} |
} |
|
for (size_t l=0; l<level; ++l) |
|
|
std::cout << "=="; |
|
|
std::cout << "Calcule l'union\n"; |
|
3016 |
break; |
break; |
3017 |
} case Shape::intersection: { |
} case Shape::intersection: { |
3018 |
const Intersection& I = static_cast<const Intersection&>(*(object.shape())); |
const Intersection& I = static_cast<const Intersection&>(*(object.shape())); |
3020 |
size_t j=0; |
size_t j=0; |
3021 |
for(Intersection::const_iterator i = I.begin(); |
for(Intersection::const_iterator i = I.begin(); |
3022 |
i != I.end(); ++i,++j) { |
i != I.end(); ++i,++j) { |
3023 |
if (j>1) { |
showObject((*(*i)), level+1, objectStack); |
3024 |
|
if (j>0) { |
3025 |
for (size_t l=0; l<level; ++l) |
for (size_t l=0; l<level; ++l) |
3026 |
std::cout << "=="; |
std::cout << "=="; |
3027 |
std::cout << "Calcule l'intersection\n"; |
|
3028 |
|
std::string u = "intersection("; |
3029 |
|
std::cerr << "Calcule l'intersection de " << objectStack.top(); |
3030 |
|
u+=objectStack.top(); |
3031 |
|
objectStack.pop(); |
3032 |
|
u+=" et de "; |
3033 |
|
std::cerr << " et de " << objectStack.top() << '\n'; |
3034 |
|
u+=objectStack.top(); |
3035 |
|
objectStack.pop(); |
3036 |
|
|
3037 |
|
u+=")"; |
3038 |
|
objectStack.push(u); |
3039 |
} |
} |
|
showObject((*(*i)), level+1, objectStack, numero+1); |
|
3040 |
} |
} |
|
for (size_t l=0; l<level; ++l) |
|
|
std::cout << "=="; |
|
|
std::cout << "Calcule l'intersection\n"; |
|
3041 |
break; |
break; |
3042 |
} case Shape::difference: { |
} case Shape::difference: { |
3043 |
fferr(0) << __FILE__ << ':' << __LINE__ << ": Not implemented\n"; |
fferr(0) << __FILE__ << ':' << __LINE__ << ": Not implemented\n"; |
3045 |
} case Shape::not_: { |
} case Shape::not_: { |
3046 |
const Not& N = static_cast<const Not&>(*(object.shape())); |
const Not& N = static_cast<const Not&>(*(object.shape())); |
3047 |
std::cout << "Not:\n"; |
std::cout << "Not:\n"; |
3048 |
showObject((*N.object()), level+1, objectStack, numero+1); |
showObject((*N.object()), level+1, objectStack); |
3049 |
break; |
break; |
3050 |
} default: { |
} default: { |
3051 |
std::cout << "Nouvel Objet à traiter: " << numero << '\n'; |
objectStack.push((*object.shape()).typeName()); |
3052 |
|
std::cout << "Marching cube sur " << objectStack.top() << '\n'; |
3053 |
} |
} |
3054 |
} |
} |
3055 |
} |
} |
3077 |
const Object& object = Omega.object(); |
const Object& object = Omega.object(); |
3078 |
const Scene& scene = Omega.scene(); |
const Scene& scene = Omega.scene(); |
3079 |
|
|
3080 |
std::stack<int> objectStack; |
std::stack<std::string> objectStack; |
3081 |
showObject(object, 0, objectStack, 0); |
showObject(object, 0, objectStack); |
|
//std::exit(1); |
|
3082 |
|
|
3083 |
switch (object.shapeType()) { |
switch (object.shapeType()) { |
3084 |
case Shape::union_: { |
case Shape::union_: { |