• <bdo id='zHHuo'></bdo><ul id='zHHuo'></ul>
    <legend id='zHHuo'><style id='zHHuo'><dir id='zHHuo'><q id='zHHuo'></q></dir></style></legend>

  1. <tfoot id='zHHuo'></tfoot>
    <i id='zHHuo'><tr id='zHHuo'><dt id='zHHuo'><q id='zHHuo'><span id='zHHuo'><b id='zHHuo'><form id='zHHuo'><ins id='zHHuo'></ins><ul id='zHHuo'></ul><sub id='zHHuo'></sub></form><legend id='zHHuo'></legend><bdo id='zHHuo'><pre id='zHHuo'><center id='zHHuo'></center></pre></bdo></b><th id='zHHuo'></th></span></q></dt></tr></i><div id='zHHuo'><tfoot id='zHHuo'></tfoot><dl id='zHHuo'><fieldset id='zHHuo'></fieldset></dl></div>

      <small id='zHHuo'></small><noframes id='zHHuo'>

      您如何确定一个点位于线段上的其他两个点之间

      时间:2023-09-11
    1. <small id='qn9LM'></small><noframes id='qn9LM'>

      <i id='qn9LM'><tr id='qn9LM'><dt id='qn9LM'><q id='qn9LM'><span id='qn9LM'><b id='qn9LM'><form id='qn9LM'><ins id='qn9LM'></ins><ul id='qn9LM'></ul><sub id='qn9LM'></sub></form><legend id='qn9LM'></legend><bdo id='qn9LM'><pre id='qn9LM'><center id='qn9LM'></center></pre></bdo></b><th id='qn9LM'></th></span></q></dt></tr></i><div id='qn9LM'><tfoot id='qn9LM'></tfoot><dl id='qn9LM'><fieldset id='qn9LM'></fieldset></dl></div>
      <tfoot id='qn9LM'></tfoot>
        <tbody id='qn9LM'></tbody>

            <bdo id='qn9LM'></bdo><ul id='qn9LM'></ul>

            • <legend id='qn9LM'><style id='qn9LM'><dir id='qn9LM'><q id='qn9LM'></q></dir></style></legend>

                本文介绍了您如何确定一个点位于线段上的其他两个点之间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                假设您有一个二维平面,上面有 2 个点(称为 a 和 b),每个点用一个 x 整数和一个 y 整数表示.

                Let's say you have a two dimensional plane with 2 points (called a and b) on it represented by an x integer and a y integer for each point.

                如何确定另一个点 c 是否在 a 和 b 定义的线段上?

                How can you determine if another point c is on the line segment defined by a and b?

                我最常使用 python,但任何语言的示例都会有所帮助.

                I use python most, but examples in any language would be helpful.

                推荐答案

                检查 (ba) 和 (ca) 的 叉积 是否为 0,正如 Darius Bacon 所说,告诉您积分是否a、b 和 c 对齐.

                Check if the cross product of (b-a) and (c-a) is 0, as tells Darius Bacon, tells you if the points a, b and c are aligned.

                但是,由于您想知道 c 是否介于 a 和 b 之间,您还必须检查 (ba) 和 (ca) 的 点积 是否 并且小于 a 和 b 之间距离的平方.

                But, as you want to know if c is between a and b, you also have to check that the dot product of (b-a) and (c-a) is positive and is less than the square of the distance between a and b.

                在未优化的伪代码中:

                def isBetween(a, b, c):
                    crossproduct = (c.y - a.y) * (b.x - a.x) - (c.x - a.x) * (b.y - a.y)
                
                    # compare versus epsilon for floating point values, or != 0 if using integers
                    if abs(crossproduct) > epsilon:
                        return False
                
                    dotproduct = (c.x - a.x) * (b.x - a.x) + (c.y - a.y)*(b.y - a.y)
                    if dotproduct < 0:
                        return False
                
                    squaredlengthba = (b.x - a.x)*(b.x - a.x) + (b.y - a.y)*(b.y - a.y)
                    if dotproduct > squaredlengthba:
                        return False
                
                    return True
                

                这篇关于您如何确定一个点位于线段上的其他两个点之间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:在球面上均匀分布n个点 下一篇:如何使用 PIL 生成圆形缩略图?

                相关文章

                最新文章

                  <bdo id='RXvqQ'></bdo><ul id='RXvqQ'></ul>
              1. <small id='RXvqQ'></small><noframes id='RXvqQ'>

              2. <i id='RXvqQ'><tr id='RXvqQ'><dt id='RXvqQ'><q id='RXvqQ'><span id='RXvqQ'><b id='RXvqQ'><form id='RXvqQ'><ins id='RXvqQ'></ins><ul id='RXvqQ'></ul><sub id='RXvqQ'></sub></form><legend id='RXvqQ'></legend><bdo id='RXvqQ'><pre id='RXvqQ'><center id='RXvqQ'></center></pre></bdo></b><th id='RXvqQ'></th></span></q></dt></tr></i><div id='RXvqQ'><tfoot id='RXvqQ'></tfoot><dl id='RXvqQ'><fieldset id='RXvqQ'></fieldset></dl></div>
                <tfoot id='RXvqQ'></tfoot>
              3. <legend id='RXvqQ'><style id='RXvqQ'><dir id='RXvqQ'><q id='RXvqQ'></q></dir></style></legend>