python 空间距离计算

目录

python 空间距离计算

已知两点,画三角形

批量矩阵计算


python 空间距离计算

要在空间中找到一个点,使其位于点 b 和 c 之间的连线上,并且与点 b 的距离等于点 a 到点 b 的距离的2倍。

import numpy as np

if __name__ == '__main__':

    a = np.array([1, 2, 1])
    b = np.array([3, 4,2])
    c = np.array([7, 8, 15])


    bc = c - b

    print('dis a',np.linalg.norm(b - a) )
    # 计算点 d 的坐标,使得 db = ab
    d = b + 2*(np.linalg.norm(b - a) / np.linalg.norm(bc)) * bc

    print("点 d 的坐标为:", d)

    print('dis a', np.linalg.norm(d - b))

已知两点,画三角形

import numpy as np
import cv2

# 定义点 a 和 b
a = np.array([100, 400])
b = np.array([300, 200])

# 计算向量 ab 和点 d 的坐标
ab = b - a
d = a + 0.65 * ab

# 计算向量 ab 的单位法向量
n = np.array([-ab[1], ab[0]])
n = n / np.linalg.norm(n)

up=-1
# 计算点 c 的坐标
c = d -up* int(0.2 * np.linalg.norm(ab)) * n

# 创建一个黑色背景的图像
height, width = 500, 500
img = np.zeros((height, width, 3), dtype=np.uint8)

# 在图像上绘制点和线段
cv2.circle(img, tuple(a), 5, (0, 0, 255), -1)
cv2.circle(img, tuple(b), 5, (0, 255, 0), -1)
cv2.circle(img, tuple(c.astype(int)), 5, (255, 0, 0), -1)
cv2.line(img, tuple(a), tuple(c.astype(int)), (255, 255, 255), 2)
cv2.line(img, tuple(b.astype(int)), tuple(c.astype(int)), (255, 255, 255), 2)

# 添加文字标签
cv2.putText(img, 'A', tuple(a - np.array([10, 10])), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)
cv2.putText(img, 'B', tuple(b + np.array([10, -10])), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)
cv2.putText(img, 'C', tuple(c.astype(int) + np.array([10, -10])), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)

# 显示图像
cv2.imshow('Points and Lines with Labels', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

批量矩阵计算

import numpy as np
import cv2

if __name__ == '__main__':

    up=1
    # 定义多组点 a 和 b 的坐标
    A = np.array([[100, 100], [150, 250], [200, 300]])
    B = np.array([[300, 400], [400, 450], [400, 600]])

    # 计算向量 AB 和点 D 的坐标
    AB = B - A
    D = A + 0.65 * AB

    # 计算向量 AB 的单位法向量
    N = np.array([-AB[:, 1], AB[:, 0]]).T
    N_norm = np.linalg.norm(N, axis=1, keepdims=True)
    N_unit = N / N_norm

    # 计算点 C 的坐标
    C = D + 0.2 *up* np.linalg.norm(AB, axis=1, keepdims=True) * N_unit

    # 创建一个黑色背景的图像
    height, width = 600, 600
    img = np.zeros((height, width, 3), dtype=np.uint8)

    # 在图像上绘制点和线段
    for i in range(A.shape[0]):
        a, b, c = A[i], B[i], C[i]
        cv2.circle(img, tuple(a), 5, (0, 0, 255), -1)
        cv2.circle(img, tuple(b), 5, (0, 255, 0), -1)
        cv2.circle(img, tuple(c.astype(int)), 5, (255, 0, 0), -1)
        cv2.line(img, tuple(a), tuple(c.astype(int)), (255, 255, 255), 2)
        cv2.line(img, tuple(b), tuple(c.astype(int)), (255, 255, 255), 2)
        cv2.putText(img, f'A{i + 1}', tuple(a - np.array([10, 10])), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)
        cv2.putText(img, f'B{i + 1}', tuple(b + np.array([10, -10])), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)
        cv2.putText(img, f'C{i + 1}', tuple(c.astype(int) + np.array([10, -10])), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)

    # 显示图像
    cv2.imshow('Batch Points and Lines with Labels', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/481595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习入门 】逻辑斯蒂回归和分类

系列文章目录 第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 文章目录 系列文章目录前言一、分类问题的数学形式二、最大似然估计三、交叉熵损失函数四、多类别分类多类别逻辑斯蒂回归归一化指数函数交叉熵误差和均方误差的比较 五…

docker (一)

1,什么是docker 首先我们可以好好的看看docker的那个可能的图标,你想象到了什么? ... docker是一个开源的应用容器引擎,有Docker公司(前dotCloud公司)开发,基于Apache2.0开源授权协议发行。该…

网络工程师笔记15(OSPF协议-2)

OSPF协议 OSPF是典型的链路状态路由协议,是目前业内使用非常广泛的 IGP 协议之一。 Router-ID(Router ldentifier,路由器标识符),用于在一个 OSPF 域中唯一地标识一台路由器。Router-ID 的设定可以通过手工配置的方式,或使用系统自…

吴恩达机器学习笔记 二十七 决策树中连续值特征的选择 回归树

还是猫狗分类的案例&#xff0c;假如再增加一个特征weight&#xff0c;该值是一个连续的值&#xff0c;如何在决策树中使用该特征&#xff1f; 如下图所示&#xff0c;尝试不同的阈值&#xff0c;如 weight<9 , 此时左边有四个样本&#xff0c;都为猫&#xff0c;右边有六个…

c语言--内存函数的使用(memcpy、memcmp、memset、memmove)

目录 一、memcpy()1.1声明1.2参数1.3返回值1.4memcpy的使用1.5memcpy模拟使用1.6注意 二、memmove()2.1声明2.2参数2.3返回值2.4使用2.5memmove&#xff08;&#xff09;模拟实现 三、memset3.1声明3.2参数3.3返回值3.4使用 四、memcmp()4.1声明4.2参数4.3返回值4.4使用 五、注…

Android视角看鸿蒙第八课(module.json5中的各字段含义之abilities)下

Android视角看鸿蒙第八课(module.json5中的各字段含义之abilities&#xff09;下 导读 上篇文章开始学习abilities下的各字段含义&#xff0c;因为篇幅原因只学习了name、srcEntry、description、icon和label字段的含义和用法&#xff0c; 这篇文章继续学习和了解其他字段。 …

二叉树|106.从中序与后序遍历序列构造二叉树

力扣题目链接 class Solution { private:TreeNode* traversal (vector<int>& inorder, vector<int>& postorder) {if (postorder.size() 0) return NULL;// 后序遍历数组最后一个元素&#xff0c;就是当前的中间节点int rootValue postorder[postorder.…

二分查找法总结

目录 1、思路讲解&#xff08;LC704&#xff09;2、代码思路讲解&#xff08;循环不变量&#xff09;&#xff08;1&#xff09; 左闭右闭&#xff08;2&#xff09;左闭右开&#xff08;3&#xff09;总结&#xff1a;左开右闭和左闭右开&#xff08;4&#xff09;复杂度分析 …

TCP和UDP 传输层协议的区别

TCP协议 当一台计算机想要与另一台计算机通讯时&#xff0c;两台计算机之间的通信需要畅通且可靠&#xff0c;这样才能保证正确收发数据。例如&#xff0c;当你想查看网页或查看电子邮件时&#xff0c;希望完整且按顺序查看网页&#xff0c;而不丢失任何内容。当你下载文件时&…

Docker学习笔记 - 基本概念

一. 什么是“容器”&#xff08;container&#xff09;和“镜像”&#xff08;Image&#xff09; 所谓“容器”可以理解为一个模拟操作系统的虚拟层&#xff0c;大部分是基于Linux的&#xff0c;应用程序及其配置信息&#xff0c;依赖库可以打包成一个Image独立运行在这个虚拟…

nvidia显卡如何安装cuda驱动

目录 查看显卡对应的cuda版本下载与你显卡匹配的CUDA Toolkit 查看显卡对应的cuda版本 按 微软 R 键&#xff0c;输入cmd 然后输入 nvidia-smi &#xff0c;回车显示下面信息&#xff1a; 看到 CUDA Version 为 12.2 下载与你显卡匹配的CUDA Toolkit 打开网页&#xff1a…

【竞技宝】DOTA2:梦幻联赛预spirit惨遭淹死 LGD不敌KEV

北京时间2024年3月23日,近期各大赛区的一线战队参加的比赛暂时告一段落,目前关注度最高的比赛是正在进行的梦幻联赛S23预选赛,本以为各大战队能够在实力差距明显的预选赛中轻松突围,没想到本次预选赛目前为止却是冷门频出。 近日,梦幻联赛S23的东欧区预选赛已经全部结束,最终NA…

C语言----动态内存

学到这里了&#xff0c;大家应该对C语言的了解跟深一层了吧。我们C语言写代码不能只局限于直接写代码。我们要了解C语言的内存分布&#xff0c;我们都知道C语言的内存是有堆区&#xff0c;栈区&#xff0c;静态区的。然后栈区是我们平常创建临时变量存储的地方&#xff0c;静态…

3.23项目:聊天室

1、 基于UDP的网络聊天室 项目需求&#xff1a; 如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息如果有人下线&#xff0c;其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器 #inc…

四年蓄势,TikTok决定硬刚

在X平台&#xff08;原推特&#xff09;上线的一则视频里&#xff0c;周受资看起来又焦急&#xff0c;又强硬。他的眉毛扭到了一起&#xff0c;完全不像去年那个在美国国会听证会上&#xff0c;接受了5小时高压问询&#xff0c;仍风度翩翩的跨国公司CEO。 “过去几年来&#x…

js数据流详细讲解

文章目录 单向数据流单向数据流示例: 双向数据流双向数据流示例: 延伸和扩展状态管理Redux 示例&#xff1a; 异步数据流异步操作示例&#xff08;使用 async/await&#xff09;&#xff1a; 数据转换和处理数据处理示例&#xff08;使用 lodash&#xff09;&#xff1a; 实时数…

解决大型多模态模型的幻觉问题,新方法AITuning助力AI更可靠

引言&#xff1a;多模态对话幻觉的挑战 在人工智能领域&#xff0c;开发能够通过视觉和语言等多种渠道与人类互动的通用助手是一个重要问题。受到大型语言模型&#xff08;LLMs&#xff09;如ChatGPT的显著成功的启发&#xff0c;研究社区对开发能够支持视觉-语言指令的多模态助…

力扣热门算法题 75. 颜色分类,76. 最小覆盖子串,77. 组合

75. 颜色分类&#xff0c;76. 最小覆盖子串&#xff0c;77. 组合&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.21 可通过leetcode所有测试用例。 目录 75. 颜色分类 解题思路 完整代码 Python Java 76. 最小覆盖子串 解…

六.排序nb三人组(快速排序)

目录 17-快速排序原理介绍 思路: 18-快速排序代码实现 19-快速排序代码实现2 缺点: 递归的限度: 17-快速排序原理介绍 思路: --先找一个变量把 5(第一个数) 存起来, (两个箭头分别是left , right) --左边有一个空位, 发现左边的位置是给比5小的值准备的. --找比5小的值…

校招应聘流程讲解

在整个应聘流程中&#xff0c;记得保持积极的态度、认真准备面试&#xff0c;同时也要对自己的能力和经验有清晰的认识&#xff0c;这样才能在竞争激烈的校园招聘中脱颖而出&#xff0c;成功获得心仪的工作机会. 1. 校招资源获取 想要参加校招&#xff0c;首先需要获取校招资…