精华内容
下载资源
问答
  • C++求点和平面关系

    千次阅读 2013-11-24 08:56:58
    一个平面通常是由一个平面法线向量,如v1(1,2,3),和点到原点(0,0,0)到平面的距离确定的。 当然数学中还有其他定义方法,但是DirectX和OpenGL都是... classfyPoint这个函数就是用来计算点和平面关系的。 实现代码:

    一个平面通常是由一个平面法线向量,如v1(1,2,3),和点到原点(0,0,0)到平面的距离确定的。

    当然数学中还有其他定义方法,但是DirectX和OpenGL都是使用这种定义方法的。这样定义的平面叫一般平面,其实是由点法式平面变形来的。

    点我们可以使用Vector3类来确定,这个类既可以确定点,也可以确定向量。

    Vector3这个类定义:http://blog.csdn.net/kenden23/article/details/16901331

    下面定义一个平面:

    class Plane
    {
    public:
    	float a, b, c, d;
    	enum PLAN_STATES
    	{
    		PLANT_FRONT,
    		PLANT_BACK,
    		PLANT_ON_PLANE
    	};
    
    	Plane():a(0), b(0), c(0), d(0){}
    	Plane(float a1, float b1, float c1, float d1):a(a1), b(b1), c(c1), d(d1){}
    
    	void createPlane(Vector3 v1, Vector3 v2, Vector3 v3);
    	float distance(float x, float y, float z);
    	float distance(Vector3 v);
    	PLAN_STATES classifyPoint(float x, float y, float z, float &dist);
    };


    CreatePlane函数是用三个点确定一个平面,并计算成一般平面,存储好。 classfyPoint这个函数就是用来计算点和平面的关系的。

    实现代码:

    void Plane::createPlane(Vector3 v1, Vector3 v2, Vector3 v3)
    {
    	Vector3 t1, t2, n;
    	t1 = v2 - v1;
    	t2 = v3 - v1;
    	n = t1.crossProduct(t2);
    	n.normalize();
    	a = n.x;
    	b = n.y;
    	c = n.z;
    	d = -(a*v1.x + b*v1.y + c*v1.z);
    }
    
    float Plane::distance(float x, float y, float z)
    {
    	return a*x+b*y+c*z+d;
    }
    
    float Plane::distance(Vector3 v)
    {
    	return a*v.x+b*v.y+c*v.z+d;
    }
    
    //Claaisyf a point's position about the plane
    Plane::PLAN_STATES Plane::classifyPoint(float x, float y, float z, float &dist)
    {
    	dist = distance(x,y,z);
    	if (dist > uZero)
    	{
    		return PLANT_FRONT;
    	}
    	if (dist < -uZero)
    	{
    		return PLANT_BACK;
    	}
    	return PLANT_ON_PLANE;
    }
    


    以平面的法向量为标准,如果在法向量正方向,那么就是在平面前面,如果在法向量反方向就是在平面后面,在Vector3文件中定义了个uZero = 1e-6 (=0.000001);如果距离少于uZero,那么就是在平面上。因为浮点数是有误差的,所以最好不用0作为比较。

    测试代码:

    #include<iostream>
    #include"Plane.h"
    
    using namespace std;
    
    int main() 
    {
    	Plane p1;
    	Vector3 v1(1.0f, 0.0f, 0.0f);
    	Vector3 v2(0.0f, 1.0f, 0.0f);
    	Vector3 v3(0.0f, 0.0f, 1.0f);
    	p1.createPlane(v1, v2, v3);
    	cout<<"We have create a plane:\n";
    	cout<<"Plane's a = "<<p1.a<<endl;
    	cout<<"Plane's b = "<<p1.b<<endl;
    	cout<<"Plane's c = "<<p1.c<<endl;
    	cout<<"Plane's d = "<<p1.d<<endl;
    	cout<<"v1 to Plane's distance is: "<<p1.distance(v1)<<endl;
    
    	Vector3 v4(8.0f, 8.0f, 8.0f);
    	cout<<"Vector3 v4 is: ";
    	v4.printVec3();
    	cout<<"v4's relationship with plane is: ";
    	float dist = 0;
    	switch (p1.classifyPoint(v4.x, v4.y, v4.z, dist))
    	{
    	case Plane::PLANT_BACK:
    		cout<<"on the back of the plane.\n";
    		break;
    	case Plane::PLANT_FRONT:
    		cout<<"on the front of the plane.\n";
    		break;
    	case Plane::PLANT_ON_PLANE:
    		cout<<"right on the plane\n";
    		break;
    	default:
    		break;
    	}
    	cout<<"v4 to plane's distance is: "<<dist<<endl;
    	system("pause");
     	return 0;
    }


    运行结果:

    展开全文
  • 本章主要内容:2.1点、直线、平面之间的位置关系,2.2直线、平面平行的判定及其性质,2.3直线、平面垂直的判定及其性质.2.1节的核心是空间中直线和平面间的位置关系.从知识结构上看,在平面基本性质的基础上,由...
  • 为研究平面上以正六边形为基本集的周期函数的性质,定义了在平面上以矩形为基本集的半交错周期函数概念,并讨论了这2类函数之间的一些相互关系 。由此可以揭示这 2类函数的 Fourier级数理论的一些联系 。顺便给出一个...
  • 1. 两平面的夹角(二面角)的定义:两平面法向量之间的夹角 2. 两平面垂直于平行的充要条件 3. 平面位置关系示例 4. 求过一点与两个已知平面都垂直的平面的方程 5. 练习 ...

     

    1. 两平面的夹角(二面角)的定义:两平面法向量之间的夹角

     

    2. 两平面垂直于平行的充要条件

     

    3. 平面位置关系示例

     

    4. 求过一点与两个已知平面都垂直的平面的方程

     

    5. 练习

    展开全文
  • 平面曲线的三种方程及转化关系,杜艳梅,孙明珠,本文从实际意义出发,推导了摆线、星形线、心形线等平面曲线的方程,指出方程中参数的几何意义。根据平面曲线方程的三种表示:一
  • 平面纹理与球面纹理映射关系

    千次阅读 2020-02-22 00:19:35
    平面纹理与球面纹理映射关系使用顶点的法向量生成纹理坐标使用顶点的位置向量生成纹理坐标参考链接 球面纹理映射就是将一个平面纹理映射到球面上,见下图:     实现球面纹理映射有两种方法,一种是使用顶点的...

    球面纹理映射就是将一个平面纹理映射到球面上,见下图:
    在这里插入图片描述

    实现球面纹理映射有两种方法,一种是使用顶点的法向量来生成纹理坐标,另一个是使用顶点的位置向量来生成纹理坐标。

    使用顶点的法向量生成纹理坐标

        问题的本质是根据球面上每个点的法向量坐标生成对应的纹理坐标,请看下图,下图中外部的方框表示二维纹理坐标,其范围是(u,v)min = (0,0), (u,v)max = (1,1),中间的圆形表示球面法向量坐标,其x,y分量的范围是(x,y)min = (-1,-1), (x,y)max = (1,1)。
    在这里插入图片描述
        所以问题的本质变成了两组坐标的映射,也即将区间(x,y)min - (x,y)max映射到区间(u,v)min - (u,v)max。这里我们使用反正弦函数y = acrsin(x)来实现。先看一下它的函数图象:
    在这里插入图片描述
        由这个图象知,它的定义域x = (-1,1),值域是y = (-pi / 2, pi / 2)。
        三维球体的半径为r,水平转动角度为h([0,2PI]),上下转动角度为p([-PI/2,PI/2]),所以球面上一点的三维坐标sphere(x,y,z)=(r* cosp* cosh, r* cosp* sinh, r* sinp)。
        反向变换有:p=arcsin(z/r) ,h=arctan(y/x)。
        当把p对应到纹理的V方向,把H对应到纹理的U方向,UV的范围都是[0,1]。在知道球面坐标xyz和半径r以后,球面点对应的纹理坐标就是V=arcsin(z/r)/PI+0.5,U=arctan(y/x)/2/PI。

    球面坐标到二维平面坐标变换如下:

    public Vector3 Point = new Vector3(100.0f, 50.0f, 70.0f);//球体上的坐标
    public Vector2 uv;//二维纹理坐标
    double r = Math.Sqrt(Point.x * Point.x + Point.y * Point.y + Point.z * Point.z);
    double u = Math.Atan(Point.y / Point.x) / 2.000f / PI;
    double v = Math.Asin(Point.z / r) / PI + 0.500f;
               
    uv.x = (float)u;
    uv.y = (float)v;
    

    经过变换后,二维纹理坐标原点在左下角:
    在这里插入图片描述
    在这里插入图片描述
        而我们在处理时往往需要有读取文件的操作,YUV文件的读取是从图像的左上角开始读取的,我们将读入的YUV文件前一半亮度置零,得到图像如下:
    在这里插入图片描述
    YUV图片上半部分全黑,说明了读取是从左上角开始的。

    使用顶点的位置向量生成纹理坐标

        上面的方法在某些场合下并不适用,比如当模型是立方体的时候,使用顶点法向量就不合适了,因为立方体使用的是面法向量,也就是位于同一个面的顶点的法向量是相同的,这时候应该使用顶点的位置来计算纹理坐标。可以用顶点的位置坐标与模型的中心坐标做差,这样得到一个向量,相当于由中心到一个假想球体的投影,这里并不是真正意义的球面映射,只不过在映射过程中有一个假想球而已,如下图所示:
    在这里插入图片描述

    参考链接

    https://www.cnblogs.com/stardasha/p/3389159.html
    http://www.voidcn.com/article/p-mxdncciq-nb.html

    展开全文
  • 以鄂尔多斯盆地大牛地气田上古生界下石盒子组为研究对象,利用钻井岩心、测井、物性和产能等资料,研究不同岩相一测井相与储集砂体物性及产能的关系,结果表明:(含砾)粗粒砂岩相(箱形)储集砂体物性最好,产能最高;...
  • 平面内两条线段位置关系的判定在很多领域都有着广泛的应用,比如游戏、CAD、图形处理等,而两线段交点的求解又是该算法中重要的一环。本文将尽可能用通俗的语言详细的描述一种主流且性能较高的判定算法。 外积,又称...
  • 点云法向量估计的主要思路是对K-近邻的N个点进行平面拟合(平面过N点重心),平面法向量即为所求;所以求法向量就是变相的求拟合平面。 下面我们用最小二乘法求k近邻点云的拟合平面: 当 ||x||=1时,Ax=0的最小...

         点云法向量估计的主要思路是对K-近邻的N个点进行平面拟合(平面过N点重心),平面法向量即为所求;所以求法向量就是变相的求拟合平面。

    下面我们用最小二乘法求k近邻点云的拟合平面:

    当 ||x||=1时,Ax=0的最小二乘解是ATA的最小特征值对应的特征向量等同于:ATA的最小特征值所对应的特征向量可使||Ax||最小。

    结论:假设k-近邻点矩阵B,B为k*3的矩阵,则根据B拟合平面的法向量就是BTB对应的最小特征向量;

    同理我们可以得出BTB对应的最大特征向量就是拟合平面的方向向量。(这里的前提是:B已经去中心化)


    实际上,求一组点的拟合平面的过程,就是求其PCA的过程。因为PCA也是可以通过最小化投影距离推导出来的。即样本点到这个超平面的距离足够近。

    PCA的推导:基于最小投影距离

    重建:

                                  

         上式中的x'其实表示原样本点在新的基下的拉伸程度系数,我们把拉伸系数再乘上对应的基向量(在原坐标系下的方向向量),就相当于求出投影后的样本点在原坐标系下的坐标。以三维坐标为例,将点P(x,y,z)投影到一个平面内,变成二维坐标M(x',y'),平面使用2个基向量(基向量是3维)表示,(x',y')再与2个基向量相乘求和,就得到点M在原三维空间的坐标。

    即样本点到这个超平面的距离足够近。

    展开全文
  • 有方法形式的意义是研究解决造型实践和理论问题的基本手段一切的事物 都可以用简单的几何图形去概括并遵循平面构成的形式美法则进行美化再通 过艺术作品的表达方式呈现出来人们可以通过视觉去感知和认识事
  • 创建查找转换时,您可以选择使用关系表或平面文件作为查找源。  关系查找  使用关系表作为查找源来创建查找转换时,您可以使用 ODBC 连接到查找源并导入表定义作为查找转换的结构。  您仅可对关系查找使用以下...
  • 根据小孔成像及三角形相似关系,空点的点PC落在成像平面上,成像的点P’: Zf=-XX'=-YY' (1) 其中,负号表示成的像是倒立的,f为成像平面到小孔的距离为。 为简化模型,把成像平面对称到相机前方,和三维空间的...
  • 采用指数函数拟合光束参量与波导归一化频率的关系,分别得到了以二阶矩和微分算子定义的近场模场半宽度、以二阶矩和微分算子定义的远场发散半角以及以二阶矩定义的光束传输因子和波导归一化频率V、波导芯层半宽度a的...
  • 本文在复杂平面中一参数闭合平面相似逆运动中,表达了斯坦纳面积公式和极惯性矩。 Steiner点是在转数不为零时定义的,当转数等于零时称为Steiner法线。 给出了固定极点及其分量,并说明了斯坦纳点或斯坦纳法线之间的...
  • 空间里直线与平面之间的位置关系中,平行是一种非常重要的关系,它不仅应用较多,而且是学习平面平面平行的基础.空间中直线与平面平行的定义是以否定形式给出的用起来不方便,要求学生在回忆直线与平面平行的定义...
  • 区分平面投影图平面合痕类的算法,杨志青,卢婷,纽结理论是低维拓扑学的一个重要分支。本文介绍了纽结与链环的基本理论,其次介绍了DT码的定义、序列的实现、纽结三者的关系,同�
  • 左右导数导数的几何意义和物理意义3.函数的可导性与连续性之间的关系4.平面曲线的切线和法线5.四则运算法则6.基本导数与微分表7.复合函数,反函数,隐函数以及参数方程所确定的函数的微分法8.常用高阶导数公式9.微分...
  • 空间中直线与平面之间的位置关系中,垂直是一种非常重要的位置关系,它不仅应用较多,而且是空间问题平面化的典范.空间中直线与平面的垂直问题是连接线线垂直和面面垂直的桥梁和纽带,可以说线面垂直是立体几何的...
  • 运用Hamaker假设和原子的Lennard-Jones势能推导出了两平面间的相互作用力,通过与平面间的Lennard―Jones势能进行对比分析,得到了原子势参数与平面势参数关系式。根据此关系式将Bradley模型转化为由Hamaker...
  • 这里列出一些常用的凸集,和一些球,空间,多面体,单纯性之类的正式定义,并讨论他们和凸集的关系
  • 平面详解

    千次阅读 2019-06-12 12:59:32
    学习SVM绕不开超平面的概念。先复习一些基础的概念(平面方程),帮助理解。...在空间解析几何中,任何曲面或曲线都可以看做点的集合轨迹,在这样的意义下,如果曲面S与三元方程: F(x, y, z) = 0 ...
  • 平面几何和立体几何

    千次阅读 2017-06-15 17:21:25
    余弦定理和勾股定理竟然有这样的关系]点距离、点线距离、线距离两点的距离已知平面上两点P1(x1,y1), P2(x2,y2)。分别过两点作x轴 和 y轴的垂线,在Rt△P1 QP2中,|P1 P2|2 = |P1 Q|
  • 本文介绍了图像中像素的邻域关系,通过邻域关系中基于限定灰度值的集合定义了邻接关系,通过邻接可以构建像素的通路,基于通路构建了像素的连通关系和连通集,并进一步定义了图像的区域和边界。 如果一个函数...
  • 平面和法向量

    万次阅读 2017-10-11 23:41:58
    平面常见的平面概念是在三维空间中定义的:Ax+By+Cz+D=0Ax+By+Cz+D=0,
  • 关于复频域S平面和Z平面的理解

    千次阅读 2020-03-30 17:57:13
    S平面横轴为复数实部,纵轴为虚部。 Z平面距离原点的距离为复数的模,与横轴的夹角为复数的辐角。 因此S平面的纵轴,即复数实部为0,因此,复数模为1,对应Z平面的半径为1的圆;此时虚部从负无穷到正无穷,对应...
  • 在测量中,平面控制点的精度的评定具有重要的意义。文中以某一平面控制网点为例,求出了各待定点的误差椭圆参数,然后依据误差椭圆与误差曲线之间的几何关系,绘制了各待定点的误差曲线。实践证明,该方法容易实现,可操作...
  • 高等数学关于切线,法线,切平面,法平面的详细解释 简介 本文章主要对高数下几个切线和切平面的总结 文章内容 平面曲线的切线和法线 空间曲线的切线和法平面 曲面的切平面和法线 平面曲线的切线和法线 我们...
  • 已知三点p1,p2,p3,求其平面方程,p1=[x1,y1,z1];p2=[x2,y2,z2];p3=[x3,y3,z3];那么求解下面矩阵q行列式就是了:q=[ones(4,1),[x,y,z];p1;p2;p3];detb=det(q);最后令q=0; 这里的求解方法是四阶矩阵的行列式求解,可以...
  • 6 1 1线段射线直线 1 教学目标 1理解点线段射线直线等简单的平面图形的意义了解线段直线的性质理解线段中点及两点的距离等概念 2结合图形认识线段的数量关系并探索点和线的性质 重点难点线段射线直线的定义和...
  • 针对传统并行网格生成方法在将子域映射到多个处理器上进行处理的过程中不考虑子域邻接关系,从而导致生成的各处理器网格之间共享节点数过多,通信量巨大,而必须进行大规模网格重划分的问题,根据子域邻接关系定义...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,077
精华内容 29,230
关键字:

平面间关系的定义