Introduce AbstractKernel

This commit is contained in:
Thomas Krijnen
2019-01-20 13:16:42 +01:00
parent fa0a33f3c0
commit 8c5349feaa
17 changed files with 832 additions and 1201 deletions
@@ -34,6 +34,7 @@ namespace IfcGeom {
public:
virtual void Multiply(const ConversionResultPlacement*) = 0;
virtual void PreMultiply(const ConversionResultPlacement*) = 0;
virtual void TranslationPart(double& X, double& Y, double& Z) const = 0;
virtual ConversionResultPlacement* inverted() const = 0;
virtual ConversionResultPlacement* multiplied(const ConversionResultPlacement*) const = 0;
virtual double Value(int i, int j) const = 0;
+1 -1
View File
@@ -72,7 +72,7 @@ namespace IfcGeom {
return implementation_->convert(item);
}
virtual bool convert_placement(IfcUtil::IfcBaseClass* item, gp_Trsf& trsf) {
virtual bool convert_placement(IfcUtil::IfcBaseClass* item, ConversionResultPlacement*& trsf) {
return implementation_->convert_placement(item, trsf);
}
@@ -66,6 +66,10 @@ namespace IfcGeom {
virtual ConversionResultPlacement* multiplied(const ConversionResultPlacement*) const {
throw std::runtime_error("Not implemented");
}
virtual void TranslationPart(double& X, double& Y, double& Z) const {
throw std::runtime_error("Not implemented");
}
private:
cgal_placement_t trsf_;
};
@@ -69,6 +69,12 @@ namespace IfcGeom {
virtual ConversionResultPlacement* multiplied(const ConversionResultPlacement* other) const {
return new OpenCascadePlacement(trsf_.Multiplied(((OpenCascadePlacement*)other)->trsf_));
}
virtual void TranslationPart(double& X, double& Y, double& Z) const {
X = trsf_.TranslationPart().X();
Y = trsf_.TranslationPart().Y();
Z = trsf_.TranslationPart().Z();
}
private:
gp_GTrsf trsf_;
};