Skip to content

Conversation

@gunney1
Copy link
Contributor

@gunney1 gunney1 commented Dec 20, 2025

Summary

  • This PR contains misc small changes separated from the clipping performance work
  • It does the following:
    • Adds a sign-of utility function
    • Add sphere containment functionality to Sphere
    • Add a CoordinateTransformer constructor to build a transformer using terminus points.
    • Fix an error in setting klee::Geometry from a primal::Cone

@gunney1 gunney1 added this to the FY26 January Release milestone Dec 20, 2025
@gunney1 gunney1 self-assigned this Dec 20, 2025
@gunney1 gunney1 added bug Something isn't working Core Issues related to Axom's 'core' component Primal Issues related to Axom's 'primal component Klee Related to the Klee component labels Dec 20, 2025
* @brief Construct transformer that moves 4 starting points to 4
* destination points.
*/
AXOM_HOST_DEVICE CoordinateTransformer(const primal::Point<T, 3>* startPts,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A little ASCII art diagram could be useful. I assume it's something like this:

      *[2]
      |  
      |
      *[0]-----*[1]
    /
  /
*[3]

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I'm not sure I understand. The 4 starting and ending points can be anywhere. This constructor simply calls setByTerminus, which explains a bit about the input requirements. I'll add that info to the constructor docs. Let me know if you think it needs more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess I don't understand what the 4 points represent then. That's what I would want to know.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gunney1 , correct me if I'm wrong, but I think you use this ctor to transform an arbitrary tet to a unit tet like the one @BradWhitlock diagrammed. Perhaps you could make ASCII art showing the tet before transformation and use Brad's as the tet after transformation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can transform an arbitrary tet to a unit tet but only if you specify a unit tet as the second 4 points. We can transform any tet to any other tet.

Copy link
Contributor Author

@gunney1 gunney1 Dec 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@BradWhitlock you can think of the 4 points as providing the required information to define the transformation. There are 12 unknowns in the matrix so you need 12 constraints, which are the 4 3D points. I guess if it helps to think of the points as tet vertices, I could write that...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe something like "If you think of each 4 points as the vertices of a tetrahedron, the transformation moves the starting tet to the destination tet."

Copy link
Contributor

@Arlie-Capps Arlie-Capps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for breaking these changes out into a separate PR. I agree with Brad's and Rich's requests for improvements to the documentation, so I'm approving with the understanding that you'll address their concerns.


/*!
* \brief Returns the algebraic volume of the cone
* \brief Returns the algebraic volume of the cone,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(I might have seen a similar comment elsewhere)
What does algebraic volume imply vs. signed volume?
I'd suggest signed volume instead of algebraic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working Core Issues related to Axom's 'core' component Klee Related to the Klee component Primal Issues related to Axom's 'primal component

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants