Python实现三维点到直线的投影

首先要知道原理 ,今天机器学习作业要将三维的点投影到三维直线上,以下记录方法

方法借鉴:3D空间点到直线的距离 - 知乎 (zhihu.com)第一种方法

x1、x2存的是数据集,d、t是直线的参数

fig = plt.figure()
ax1 = plt.axes(projection='3d')
x = [-s0 * 250, s0 * 250] #投影的线的两个点的坐标,这里用的是过原点的直线
y = [-s1 * 250, s1 * 250]
z = [-s2 * 250, s2 * 250]
figure = ax1.plot(x,y,z,c='g') 
for i in range(0,75):

    d = x1[i][0]*s0+ x1[i][1]*s1+x1[i][2]*s2
    t = d/(s1*s1 + s2*s2 +s0*s0)
    x3 = s0*t
    y3 = s1*t
    z3 = s2*t
    ax1.scatter(x3, y3, z3, s=20, c='r', depthshade=True)
for i in range(0, 75):
    d = x2[i][0] * s0 + x2[i][1] * s1 + x2[i][2] * s2
    t = d / (s1 * s1 + s2 * s2 + s0 * s0)
    x3 = s0 * t
    y3 = s1 * t
    z3 = s2 * t
    ax1.scatter(x3, y3, z3, s=20, c='b', depthshade=True)

这边是效果图

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值