三维空间点的直线方程拟合

article/2025/9/23 21:58:52

一、直线方程的三种表示方法
1.一般式:

它实际上表示,直线是两个平面的交线,因此可以由两个平面方程得到,即:
在这里插入图片描述
2.点向式(标准方程):
在这里插入图片描述
(m, n, p) 为直线方程的方向向量;(x0, y0, z0) 为直线上的一个点。需要注意的是(x-x0, y-y0, z-z0)的方向和方向向量是平行的,也因此推导出了上面的方程。
3.参数方程:
在这里插入图片描述
由此就可以得到:
在这里插入图片描述
二、三维空间点的直线方程拟合python在这里插入图片描述

在这里插入图片描述
公式中,2应该是n, n表示数据点的个数。

由此我们就可以得到k1, b1, k2, b2。如果想要把它转换成空间直线标准方程,可以先任意取一个z0值,根据k1,b1,k2,b2 就可以求出x0, y0, 然后任意取一个p值,根据k1, k2, 就可以求出m, n值,代入到标准方程即可(所以,标准方程不是唯一的,需要从标准方程的定义去理解为什么不是唯一的)。
python 代码实现:‘

##  由空间3维点拟合出一条直线
def linear_fitting_3D_points(points):'''用直线拟合三维空间数据点。直线方程可以转化成如下形式:x = k1 * z + b1y = k2 * z + b2Input:points    ---   List, 三维空间数据点,例如:[[2,3,48],[4,5,50],[5,7,51]]返回值是公式系数 k1, b1, k2, b2'''#表示矩阵中的值Sum_X=0.0Sum_Y=0.0Sum_Z=0.0Sum_XZ=0.0Sum_YZ=0.0Sum_Z2=0.0for i in range(0,len(points)):xi=points[i][0]yi=points[i][1]zi=points[i][2]Sum_X = Sum_X + xiSum_Y = Sum_Y + yiSum_Z = Sum_Z + ziSum_XZ = Sum_XZ + xi*ziSum_YZ = Sum_YZ + yi*ziSum_Z2 = Sum_Z2 + zi**2n = len(points) # 点数den = n*Sum_Z2 - Sum_Z * Sum_Z # 公式分母k1 = (n*Sum_XZ - Sum_X * Sum_Z)/ denb1 = (Sum_X - k1 * Sum_Z)/nk2 = (n*Sum_YZ - Sum_Y * Sum_Z)/ denb2 = (Sum_Y - k2 * Sum_Z)/nreturn k1, b1, k2, b2

三、三维空间点的直线方程拟合(Matlab)

close all
clear
clchold on
PointV = load('Filletweld.txt');
x = PointV(:,1)
y = PointV(:,2)
z = PointV(:,3)
% figure(1)
% plot3(x,y,z,'r.','MarkerSize',3)
scatter3(x, y, z,'filled')  %散点图函数,'filled'表示画实心点
hold on;    %画了一幅图,再画另一幅图时,原来的图还在,与新图共存
%% 计算平均值(拟合的直线必过所有坐标的算数平均值)
xyz0(1)=mean(x);
xyz0(2)=mean(y);
xyz0(3)=mean(z);%拟合点坐标
%% 奇异值分解计算方向向量(第一种方法)
% 协方差矩阵奇异变换
% 所得直线的方向实际上与最大奇异值对应的奇异向量相同
centeredLine=bsxfun(@minus,PointV,xyz0);
[U,S,V]=svd(centeredLine)
direction=V(:,1)%方向向量%% 画图
t=-150:0.1:150;
xx=xyz0(1)+direction(1)*t;
yy=xyz0(2)+direction(2)*t;
zz=xyz0(3)+direction(3)*t;
%figure(2)
plot3(xx,yy,zz)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/yQdCc6Bm.shtml

相关文章

空间直线方程

1. 已知一个点和一个平行直线的方向向量 - 点向式 其中 (x1,y1,z1)是已知点 ,(m,n,p)是方向向量,分母右乘即可转换成参数方程形式。 2. 已知两个点 - 两点式 其中 (x1,y1,z1)(x2,y2,…

空间直线方程及其与面线的夹角

一、空间直线的方程 1.1 空间直线的一般方程 空间直线 L L L 可以看做是两个平面 Π 1 \Pi_1 Π1​ 和 Π 2 \Pi_2 Π2​ 的交线,那么就可以用两个平面方程来表示这个直线: { A 1 x B 1 y C 1 z D 1 0 A 2 x B 2 y C 2 z D 2 0 (1) \left\…

0804空间直线及其方程-向量代数与空间解析几何

文章目录 1 空间直线方程1.1 空间直线的一般方程1.2 空间直线的对称式方程1.3 空间直线的参数方程1.4 空间直线的两点式方程 3 两直线的夹角4 直线与平面的夹角4.1 定义4.2 夹角的正弦公式 5 例题6 平面束方程结语 1 空间直线方程 1.1 空间直线的一般方程 空间直线L可以看做是…

空间直线的几种方程

文章目录 空间直线的几种方程1.直线的一般方程2.对称式方程(点向式)3.参数式方程4.方程组与对称式方程的转化5.两直线的夹角6.直线与平面夹角7.异面直线距离 空间直线的几种方程 1.直线的一般方程 两相交平面方程组联立 2.对称式方程(点向式) 3.参数式方程 由对称式方程导出…

图片轮播的实现(详解两种方法)

今天带来的是前端里图片轮播的实现,可以说,这两种方法都很简单,尤其第一种,只要是有点基础的应该都可以看懂,这也是小编花费了一定时间想到的代码较少的方式。(图片我放在文末了) 当然也有更复…

简易javascript图片轮播代码

javascript图片轮播代码 因为自己是新手自学不久&#xff0c;所以代码有很多不规范的地方&#xff0c;请原谅。 html部分代码&#xff1a; <div id"head"> <button id"prev" onmousedown"p()" onmouseout"cal()"><&…

css 实现图片轮播

轮播图实现思路: 轮播图通过动画,关键帧,控制图片水平向左移动实现轮播, 主要通过让图片移动,首先把图片放置到一个div里,设置浮动,英文图片宽为600,通过动画关键帧,让它每次向左水平移动600,然后div设置超出隐藏,最终实现轮播效果 div中超出隐藏之前的效果 最终效果 代码 h…

Unity图片轮播图功能实现

通过UnityCurvedUI实现轮播效果&#xff0c;思路是将几张UI图按照较准确的位置放在空物体&#xff08;作为父物体&#xff09;下方&#xff0c;通过旋转父物体实现图片的旋转。 一、UI构建 简单构建UI结构&#xff0c;注意使用一个空物体作为几张轮播图的父级&#xff08;记得…

Unity实现图片轮播功能

Unity实现图片无限循环轮播&#xff08;横and竖&#xff09; 先来看看效果 横 实现 介绍&#xff1a;只可以左右按键控制图片的切换&#xff0c;可无限扩展图片数量思路&#xff1a;首尾相连。尾图片与首图片互换位置以及动画效果主要代码&#xff1a; RectTransform[] t…

Qt之实现图片轮播效果

一、简述 今天文章讲述的是如何用Qt实现图片轮播的效果&#xff0c;其实我们经常在网页中看到各种广告就是使用了图片轮播&#xff0c;实现小区域内嵌入多个广告的效果。 下面是CSDN页面中两种常见的图片轮播效果。基本上就是定时自动切换广告页面&#xff0c;或者手动点击选…

vue中图片轮播

vue中轮播图的实现 轮播图中html结构一般由主体图片、下方小圆圈、上一张和下一张组成。 主体图片能够实现两秒切换一次&#xff0c;并且对应的小圆圈被选中 点击上一张和下一张按钮切换相应图片&#xff0c;同时小圆圈产生变化。 点击小圆圈切换图片 鼠标放在图片主体上停…

使用transition实现图片轮播效果

前言 无缝轮播一直是面试的热门题目&#xff0c;而大部分答案都是复制第一张到最后。诚然&#xff0c;这种方法是非常标准&#xff0c;那么有没有另类一点的方法呢&#xff1f; 第一种方法是需要把所有图片一张张摆好&#xff0c;然后慢慢移动的&#xff0c; 但是我能不能直…

【JavaScript】常见的几种图片轮播

平时我们会在各种网站看见图片轮播的效果&#xff0c;但它具体是如何实现的呢&#xff1f;接下来咱们一起来看看各种图片轮播效果的产生过程吧&#xff01; 一、图片的无缝滚动 什么是图片的无缝滚动&#xff1f;通俗来讲就是一堆图片一张接着一张往过滑&#xff0c;图片之间没…

实现一个简单的图片轮播效果

学习笔记 思路 这里就说一下我的思路吧&#xff0c;我们可以先将所有图片的不透明度设置为0&#xff0c;也就是全透明&#xff0c;不可见&#xff08;也不一定靠设置透明度来实现图片不可见&#xff0c;也可以直接设置元素不可见&#xff09;&#xff0c;使用下标的方式来控制…

c++ 判断亲和数

c 判断亲和数 在自然数220与284之间&#xff0c;有一种非常奇妙的关系&#xff0c;能够整除22022511的全部正整数&#xff08;不包括220&#xff09;之和1245102011224455110恰好等于284&#xff1b;而能够整除2842271的全部正整数&#xff08;不包括284&#xff09;之和124711…

寻找亲和数对C语言,寻找亲和数

人与人之间讲究友情&#xff0c;而有趣的是&#xff0c;数与数之间也有相类似的关系&#xff0c;数学家把一对存在特殊关系的数称为“亲和数”。亲和数&#xff0c;又称相亲数、友爱数、友好数&#xff0c;指两个正整数中&#xff0c;彼此的全部约数之和(本身除外)与另一方相等…

如何判断亲和数

内容&#xff1a;判断亲和数 目的&#xff1a;掌握循环与if语句 程序代码&#xff1a; /* * 程序的版权和版本声明部分: * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称&#xff1a;test.cpp * 作 者&#xff1a;匡效国 …

亲和数-C++

目录 原题目 题目描述: 输入格式: 输出格式: 样例输入: 样例输出: 提示: 解题 part1 part2 part3 原题目 题目描述: 自然数a的因子是指能整除a的所有自然数&#xff0c;但不含a本身。例如12的因子为&#xff1a;1、2、3、4、6。若自然数的因子之和为b&#xff0c;而…

python程序设计——练习9

目录 1.任意整数各个位数之和2.列表下标转换3.稀疏矩阵的表示4.有序列表插入元素5.列表合并去重6.单词的区域7.查验身份证8.亲和数9.乘积的列表10.矩阵相加 1.任意整数各个位数之和 请输入任意一个正整数&#xff0c;求各个位数之和并输出。 输入样例1&#xff1a; 123 输出样…

squeezenet,DSD

squeezenet 2016.11.4 squeezenet的目的是用更少的网络构建模型&#xff0c;同时保持模型的准确率。 出发的三个原则是&#xff1a;1、用1*1卷积代替3*3卷积 2、减少与3*3卷积相连的通道数 3、在网络后期使用采样。保证特征图的大小。 其中1、2的目的是减少参数&#xff0c;同时…