this post was submitted on 13 Jan 2025
26 points (96.4% liked)

Learn Programming

1684 readers
22 users here now

Posting Etiquette

  1. Ask the main part of your question in the title. This should be concise but informative.

  2. Provide everything up front. Don't make people fish for more details in the comments. Provide background information and examples.

  3. Be present for follow up questions. Don't ask for help and run away. Stick around to answer questions and provide more details.

  4. Ask about the problem you're trying to solve. Don't focus too much on debugging your exact solution, as you may be going down the wrong path. Include as much information as you can about what you ultimately are trying to achieve. See more on this here: https://xyproblem.info/

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 2 years ago
MODERATORS
 

How can I define lines so when I click on the screen, my program knows whether I clicked on A B or C?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 7 points 1 week ago

Adding to this: if you can’t use a polygon library, it’s quite easy to check if a point is inside a polygon. Just count the number of polygon edges is above the point (have a separate count for each polygon).

If the number is odd, then the point is inside the polygon. If it’s even, then it’s outside.

If there are multiple candidate polygons (which will happen with A in the example), pick the one with the closest edge to the point. Alternatively, pick the smallest polygon.

See ray casting algorithm in this page: https://en.wikipedia.org/wiki/Point_in_polygon

Just beware of floating point precision when implementing the algoritm.

But use a polygon library first and foremost.