Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Objective
Add random sampling for the
Annulus
primitive. This is part of ongoing work to bring the variousbevy_math
primitives to feature parity.Solution
Annulus
implementsShapeSample
. Boundary sampling is implemented in the obvious way, and interior sampling works exactly as in the implementation forCircle
, using the fact that the square of the radius should be taken uniformly from between r^2 and R^2, where r and R are the inner and outer radii respectively.Testing
I generated a bunch of random points and rendered them. Here's 1000 points on the interior of the default annulus:
![Screenshot 2024-05-22 at 8 01 34 AM](https://private-user-images.githubusercontent.com/2975848/332790011-19c31bb0-edba-477f-b247-2b12d854afae.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAxMDcxNTAsIm5iZiI6MTcyMDEwNjg1MCwicGF0aCI6Ii8yOTc1ODQ4LzMzMjc5MDAxMS0xOWMzMWJiMC1lZGJhLTQ3N2YtYjI0Ny0yYjEyZDg1NGFmYWUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MDRUMTUyNzMwWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NmE0ZDYwZjU2OTg4OTVkMTZhZjFjMTQ0ZDZhZWQ1NmFiNzljNGEzZDEzZWM5NTM2Mjg0ZjE0YmViZThjOWYyNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.YazefPYwO-YhXSijrCVzD3c16IyuZRGwuiCcMhj8d_g)
This looks kind of weird around the edges, but I verified that they're all actually inside the annulus, so I assume it has to do with the fact that the rendered circles have some radius.