sketchucation logo sketchucation
    • Login
    🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

    Test if a point is between 2 points?

    Scheduled Pinned Locked Moved Developers' Forum
    7 Posts 3 Posters 251 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Chris FullmerC Offline
      Chris Fullmer
      last edited by

      Is there a text built in to check if a point is between 2 other points? I know you can test if it is on a line, but that doesn't guarantee its between any 2 points, just that is it on the same lines as them.

      I wrote something that I think is working, but I'd rather use a built in method if it exists.

      Chris

      Lately you've been tan, suspicious for the winter.
      All my Plugins I've written

      1 Reply Last reply Reply Quote 0
      • R Offline
        remus
        last edited by

        When you say 'between' do you mean like this?
        ptmiddle.jpg

        http://remusrendering.wordpress.com/

        1 Reply Last reply Reply Quote 0
        • Chris FullmerC Offline
          Chris Fullmer
          last edited by

          No, I mean if is co-linear and lies between them So like how to determine if a given point is on a given SketchUp Edge. And I think I got a working method, but it might be returning false positives, or rather false negatives. So I might have a typo or my math might be bad or it mgiht be that I"m not feeding it the points I tihnk I am. Do you have any math-y tricks for testing this?

          Chris

          Lately you've been tan, suspicious for the winter.
          All my Plugins I've written

          1 Reply Last reply Reply Quote 0
          • fredo6F Offline
            fredo6
            last edited by

            Chris,

            You can take inspiration of the following:

            
            #Check if a point is within a segment defined by 2 points. Return true or false
            def is_within_seg?(pt, pt1, pt2)
                   return false unless pt && pt1 && pt2
                   return true if pt == pt1 || pt == pt2
                   return false unless pt.on_line?([pt1, pt2])
                   pt1.vector_to(pt) % pt2.vector_to(pt) < 0
            end
            
            

            Basically, you check that the point is on the line, and then that the 2 vectors joining it to the 2 points are opposite.

            Fredo

            1 Reply Last reply Reply Quote 0
            • Chris FullmerC Offline
              Chris Fullmer
              last edited by

              All right! That took a lot thinking to comprehend all that, but yes, that does exactly what I had in mind, and is significantly shorter (+/-30 lines!). Thanks so much Fredo!

              Chris

              Lately you've been tan, suspicious for the winter.
              All my Plugins I've written

              1 Reply Last reply Reply Quote 0
              • fredo6F Offline
                fredo6
                last edited by

                It's also much faster.
                As a general rule of thumb, it is better to used geometric primitives of the Sketchup API (written in compiled C behind the scene) than to do our own calculations on coordinates in Ruby (interpreted).

                1 Reply Last reply Reply Quote 0
                • Chris FullmerC Offline
                  Chris Fullmer
                  last edited by

                  Very good to know. I've never tested anything like that, but I had a suspicion that it is true. Thanks for thiking of a method that uses SU native natives. Mine involved an algebraic formula being applied to each x,y,z coordinate, and if it got fed zero's would return NaN or Infinity, so I also had to teste everynumber before it passed through. In the end, it was quite long and I'm sure it was slow.

                  I've got it set up where I could do a time test on it, Id be interested in seeing how much faster it is.

                  Thanks Fredo!

                  Chris

                  Lately you've been tan, suspicious for the winter.
                  All my Plugins I've written

                  1 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post
                  Buy SketchPlus
                  Buy SUbD
                  Buy WrapR
                  Buy eBook
                  Buy Modelur
                  Buy Vertex Tools
                  Buy SketchCuisine
                  Buy FormFonts

                  Advertisement