Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add bitmap-ray and sprite-ray collision functions #198

Open
wants to merge 19 commits into
base: develop
Choose a base branch
from

Conversation

matt439
Copy link
Contributor

@matt439 matt439 commented Dec 13, 2024

Description

There has been growing interest in using SplashKit to perform ray-tracing in both 2D and 3D environments. However, there is a lack of ray-based functions, particularly with detecting pixel-based collisions. I have added bitmap-ray and sprite-ray functions which will allow for more advanced ray-tracing, going beyond the primitive shapes.

quad_from

This function constructs a quad around a passed-in segment. The width of the quad along the segment is also passed in as an argument.

bitmap_quad_collision

I made use of a function which I previously developed and submitted in a previous PR: #197. Unlike in the previous PR, I did not include the 4 overloads in this PR.

bitmap_bounding_circle bug fix

bitmap_ray_collision calls bitmap_bounding_circle which contains a bug. The bug was detected and fixed in a previous PR: #195. I copied the bug fix into this PR as it was necessary for accurate functioning of bitmap_ray_collision.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

How Has This Been Tested?

I added two new tests to sktest: one in each of test_geometry.cpp and test_sprites.cpp. These real-time graphical tests allow the user to control a ray by using the arrow keys and mouse. There are bitmaps and sprites in their respective tests which indicate whether a collision has occurred.

Testing Checklist

  • Tested with sktest

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings

…meters, and update collision logic with ray thickness constant
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant