mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-24 00:07:53 +00:00
Removes unnecessary operations when combining horizontal and vertical placement matrices for alignment
This commit is contained in:
@@ -104,14 +104,6 @@ struct gradient_fn_evaluator : public fn_evaluator {
|
|||||||
auto xy = horizontal_evaluator_.evaluate(u);
|
auto xy = horizontal_evaluator_.evaluate(u);
|
||||||
auto uz = vertical_evaluator_.evaluate(u);
|
auto uz = vertical_evaluator_.evaluate(u);
|
||||||
|
|
||||||
// curvature is stored in row 3 - capture it and remove it from the xy and uz matrices
|
|
||||||
// so the matrix operations (ie multiplication) works correct.y
|
|
||||||
auto horizontal_curvature = xy.row(3);
|
|
||||||
xy.row(3) = Eigen::Vector4d(0, 0, 0, 1);
|
|
||||||
|
|
||||||
auto vertical_curvature = uz.row(3);
|
|
||||||
uz.row(3) = Eigen::Vector4d(0, 0, 0, 1);
|
|
||||||
|
|
||||||
uz(0, 3) = 0.0; // x is distance along. zero it out so it doesn't add to the x from horizontal
|
uz(0, 3) = 0.0; // x is distance along. zero it out so it doesn't add to the x from horizontal
|
||||||
uz.col(1).swap(uz.col(2)); // uz is 2D in distance along - y plane, swap y and z so elevations become z
|
uz.col(1).swap(uz.col(2)); // uz is 2D in distance along - y plane, swap y and z so elevations become z
|
||||||
uz.row(1).swap(uz.row(2));
|
uz.row(1).swap(uz.row(2));
|
||||||
@@ -119,12 +111,6 @@ struct gradient_fn_evaluator : public fn_evaluator {
|
|||||||
Eigen::Matrix4d m;
|
Eigen::Matrix4d m;
|
||||||
m = xy * uz; // combine horizontal and vertical
|
m = xy * uz; // combine horizontal and vertical
|
||||||
|
|
||||||
// Put curvature back into the solution matrix
|
|
||||||
// curvature for vertical is in column 0, need it to be in column 1
|
|
||||||
// so it doesn't add to curvature for horizontal
|
|
||||||
std::swap(vertical_curvature(0), vertical_curvature(1));
|
|
||||||
m.row(3) = horizontal_curvature + vertical_curvature;
|
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user