计算给定线上的投影点位置 (x,y) start(x,y) end(x,y)

2024-01-31

如果我有三个点 P1、P2、P3 及其坐标(x,y)

P1(x,y)和P3(x,y)是线(起点,终点)的坐标,P3是需要投影的点。

how can i find the coordinate of point r(x,y) which is projection of P3 over P1 and P2 enter image description here


该解决方案扩展到具有任何几何尺寸(2D、3D、4D...)的点。它假设所有点都是一维 numpy 数组(或一维形状为 1 的二维数组)。我不确定您是否需要投影落在线段上或线段的延伸上,所以我将两者都包括在内。您可以选择最适合您的问题的一个:

#distance between p1 and p2
l2 = np.sum((p1-p2)**2)
if l2 == 0:
  print('p1 and p2 are the same points')

#The line extending the segment is parameterized as p1 + t (p2 - p1).
#The projection falls where t = [(p3-p1) . (p2-p1)] / |p2-p1|^2

#if you need the point to project on line extention connecting p1 and p2
t = np.sum((p3 - p1) * (p2 - p1)) / l2

#if you need to ignore if p3 does not project onto line segment
if t > 1 or t < 0:
  print('p3 does not project onto p1-p2 line segment')

#if you need the point to project on line segment between p1 and p2 or closest point of the line segment
t = max(0, min(1, np.sum((p3 - p1) * (p2 - p1)) / l2))

projection = p1 + t * (p2 - p1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算给定线上的投影点位置 (x,y) start(x,y) end(x,y) 的相关文章

  • 如何使用 .ui 文件创建小部件?

    我想在 MainWindow 内创建一个小部件 该小部件从使用 QtDesigner 创建的文件中获取其设计 我创建的 ui 文件是test ui 我有一个继承自的 MainWindow 实例QMainWindow这将创建一个堆叠小部件里面
  • 在Python中将SQL转换为json[重复]

    这个问题在这里已经有答案了 我需要传递一个可以使用它进行转换的对象 parseJSON 查询如下所示 cursor execute SELECT earnings date FROM table 为了传递可以转换为 json 的 HttpR
  • Python 中的“断言”有什么用?

    什么是assert意思是 它是如何使用的 The assert语句几乎存在于所有编程语言中 它有两个主要用途 它有助于在程序早期发现问题 原因明确 而不是等到其他操作失败时才发现问题 例如 Python 中的类型错误在实际引发错误之前可能会
  • 如果文件不存在,使用 python 添加一行

    我有一个 xml 文件如下
  • ModuleNotFoundError:pip install后没有名为“requests”的模块[重复]

    这个问题在这里已经有答案了 我知道以前曾有人问过类似的问题 但我找不到问题的解决方案 尝试导入请求后 我收到以下错误消息 C Users Jm PycharmProjects Test venv Scripts python exe C U
  • 在Python中从字符串中删除除字母数字字符之外的所有内容

    使用 Python 从字符串中去除所有非字母数字字符的最佳方法是什么 中提出的解决方案这个问题的 PHP 变体 https stackoverflow com questions 840948可能会进行一些小的调整 但对我来说似乎不太 Py
  • 获取 Pandas Dataframe 中列名的排名

    我将客户 ID 与他们最常购买的表演类型进行比较 Genre Jazz Dance Music Theatre Customer 100000000001 0 3 1 2 100000000002 0 1 6 2 100000000003
  • Sendmail Errno[61] 连接被拒绝

    我一直在尝试让我的应用程序将一些输出的文本邮寄到电子邮件中 为了简单起见 我隔离了脚本 import smtplib import sys import os SERVER localhost FROM os getlogin TO raw
  • 制作一个可以接受各种形状参数的函数

    Q1 Numpy 函数可以采用不同形状的参数 例如 np sum V 可以采用以下两个之一并返回具有不同形状的输出 x1 np array 1 3 1 x2 np array 1 2 3 4 5 6 7 8 2 我正在制作自己的函数 如下所
  • Python 有限边界 Voronoi 单元

    我正在尝试改编我在 stackoverflow 上找到的代码来创建具有有限边界的 voronoi 单元 我发现下面的代码https stackoverflow com a 20678647 2443944 https stackoverfl
  • Pandas groupby 汇总

    如果我有一个这样的数据框 import pandas as pd df pd DataFrame A 1 1 2 B a b c metric 4 5 2 df df groupby A B sum 得到的 df 为 metric A B
  • 无法在 VS Code 中导入

    我是 python 新手 一直在使用 VS code 现在我正在研究汤普森采样问题 需要 numpy 和 matplotlib 我已经导入了这两个库 但 VS code 给出了无法导入的错误 我知道我必须使用 PIP 进行安装 并且我已经看
  • 与 CPython、Jython 和 IronPython 相比,PyPy 能提供什么?

    从我在博客上看到和读到的内容来看 PyPy 是一个非常雄心勃勃的项目 与它的兄弟姐妹 CPython Jython 和 IronPython 相比 它会带来哪些优势 是速度 跨平台兼容性 包括移动平台 在没有 GIL 的情况下使用 c 扩展
  • PyInstaller,规范文件,导入错误:没有名为“blah”的模块

    我正在尝试通过构建 python 脚本py安装程序 http www pyinstaller org 我使用以下命令来配置 生成规范文件并构建 wget pyinstaller zip extracted it python Configu
  • 根据另一个参数的值添加参数

    根据输入之一 我想初始化某些对象 这些对象的值将是其余参数的默认值 因此 即使在 parser parse args 之前 我也需要参数之一的值 我如何使用 python argparse 模块来实现这一点 所有选项都将作为一个命令行给出
  • python中使用argsort进行排序

    我尝试对数组进行排序 import numpy as np arr 5 3 7 2 6 34 46 344 545 32 5 22 print unsorted print arr np argsort arr print sorted p
  • 为什么我必须在 pybson (=bson, GitHub:py-bson) 之后安装 pymongo 才能成功导入 pybson?

    编辑 将问题放在网上很长时间后 我注意到这是一个衍生产品无法使用 pymongo 2 2 连接到 MongoDB 2 0 5 数据库 https stackoverflow com questions 10603754 cant conne
  • 如何使用BeautifulSoup查找所有下一个链接

    我目前正在通过预设一个名为 number of pages 的变量来抓取特定网站的所有页面 预设此变量一直有效 直到添加了我不知道的新页面 例如 下面的代码适用于 3 个页面 但网站现在有 4 个页面 base url https secu
  • 以任意深度嵌套 defaultdict

    我想嵌套任意数量的默认字典 如下所示 from collections import defaultdict D defaultdict lambda defaultdict int 正如所描述的那样工作正常earlier https st
  • 你能在 Python 语法中添加新的语句吗?

    您可以添加新的语句 例如print raise with 到 Python 的语法 说 允许 mystatement Something Or new if True print example 没那么多 如果你should 而是如果可能的

随机推荐