在三维空间中表示平面和直线

平面和直线是三维计算机视觉和计算机图形学中有用的几何实体。将它们表示为一组点是低效的,这会导致很大的内存需求,具体取决于用于生成点的步长。

在本文中,我将讨论如何使用向量方程表示平面和直线。我还将介绍如何使用向量形式找到直线和平面之间的交点。

三维线条

我们可以用下面的等式[1]表示向量形式的直线。

p = l₀ + l * ** d,** d ∈ R

其中,I是一个向量,表示直线方向,l₀是直线上的一个点,d是标量。

p是直线上的通用点,这些点定义了线。因此,为了定义直线,我们只需要知道6个数字/参数,就可以用向量形式完整地表示它。

我创建了一个类来表示线向量并绘制它。它由一个vector和一个point_on_line参数化,它们都是3x1 numpy列向量。

要在直线上获得点,我们可以使用该方程。通过缩放vector改变d。

import matplotlib.pyplot as plt
import numpy as np

class Line:
    def __init__(self, vector, point_on_line) -> None:
        self.vector = np.array(vector).reshape(3, 1)
        self.point_on_line = np.array(point_on_line).reshape(3, 1)

    def plot(self, step_size=0.1):
        points = np.zeros((3, 0))
        for i in np.arange(-10, 10, step_size):
            points = np.concatenate(
                (points, self.point_on_line + i * self.vector), axis=1)
        fig = plt.figure()
        ax = fig.add_subplot(111, projection='3d')
        ax.scatter(points[0, :].ravel(),
                   points[1, :].ravel(),
         
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值