python 求二维向量的 垂直向量

这篇博客介绍了如何在图形绘制或图像处理中求取二维向量的垂直向量。通过将向量规一化并交换坐标实现。文章提供了一个Python代码示例,计算30度和120度角的向量,并验证了它们的垂直关系。通过向量点乘接近于零来判断两个向量是否垂直。实验结果显示两个向量确实垂直。
摘要由CSDN通过智能技术生成

在绘制图形或者图像处理中,经常需要求向量的垂直向量:


通常,可使用如下步骤:

  • 首先向量规一化
  • 再向量x, y 轴值 互换。

实验与验证 代码如下:
vec_1 表示 30度的向量, vec_2 表示 120 度的向量

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import numpy as np
import math


def get_vertical_vector(vec):
    """ 求二维的向量的垂直向量 """
    assert isinstance(vec, list) and len(vec) == 2, r'平面上的向量必须为2'
    return [vec[1], -vec[0]]


if __name__ == '__main__':

    # example:
    vec_1 = [math.sin(30/180*math.pi), math.cos(30/180*math.pi)]
    vec_2 = [math.sin(120/180*math.pi), math.cos(120/180*math.pi)]
    vec_3 = get_vertical_vector(vec_1)

    if np.dot(vec_1, vec_2) < 1e-6:
        print(r'{} 与 {} 向量垂直'.format(vec_1, vec_2))
    else:
        print("{} 与 {} 向量不垂直")

    if np.dot(vec_1, vec_3) < 1e-6:
        print(r'{} 与 {} 向量垂直'.format(vec_1, vec_3))
    else:
        print(r'{} 与 {} 向量不垂直'.format(vec_1, vec_3))


输入结果

[0.49999999999999994, 0.8660254037844387][0.8660254037844387, -0.4999999999999998] 向量垂直
[0.49999999999999994, 0.8660254037844387][0.8660254037844387, -0.49999999999999994] 向量垂直
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值