1
\$\begingroup\$

this question is engine agnostic, I will use the term "object" to refer to entities in my scene.

The scenario is the following:

  • I have 2 entities
  • Entity O is a capsule
  • Entity C is a point

I want to move B toward A's center but stop on A's surface in the less computationally expansive way I can think about.

I figured I'd work out the distance between the center of the capsule and the point on the surface where I should stop and use it as an offset to my destination point (destinationPoint -= direction * computedDistance), but I don't know how to find that distance.

My question is: can you come up with a better way to achieve my goal and if not can you solve the problem I've stumbled upon in my solution?

This is a representation of the secondary problem. In the figure I know the coordinates of C, O, A, B, and I want to know the length of PO or the coordinates of P.

enter image description here

\$\endgroup\$
  • \$\begingroup\$ Check for intersection of a line OC with a cylinder expanding capsules' body into infinity. Check if point of intersection P lies within capsules' cylinder body. If not - check for intersection with closest sphere cap of a capsule. \$\endgroup\$ – Kromster Mar 15 '18 at 11:55
  • \$\begingroup\$ Hey, thanks for the comment. Do you think this is something ok to do 100 times every frame? \$\endgroup\$ – Alakanu Mar 15 '18 at 12:00
  • \$\begingroup\$ why would you want to do that so frequently? Anyway - CPUs crunch through math calculations easily. Don't spend time optimising for bottlenecks that are not there. \$\endgroup\$ – Kromster Mar 15 '18 at 12:02
  • \$\begingroup\$ I was thinking about having multiple C entities in my application, ok then I will try your soultion out mate :) \$\endgroup\$ – Alakanu Mar 15 '18 at 12:10
  • \$\begingroup\$ Sorry to bother you, do you also happen to have some good reference on how to get the intersection point on a cylinder? \$\endgroup\$ – Alakanu Mar 15 '18 at 12:41

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.