Java 如何计算法线?
好的,假设我得到一个矩形(这都是2d),由物体a的x,y,宽度和高度组成。我如何计算它的法线?如果“法线”是指垂直向量,请看:对于向量Java 如何计算法线?,java,math,vector,normalization,Java,Math,Vector,Normalization,好的,假设我得到一个矩形(这都是2d),由物体a的x,y,宽度和高度组成。我如何计算它的法线?如果“法线”是指垂直向量,请看:对于向量 <a1, a2, a3> 及 叉积是 <a2 * b3 - b2 * a3, a1 * b3 - b1 * a3, a1 * b2 - b1 * a2> 。。。但是纯2D中的“法线”没有多大意义。如果“法线”指的是垂直向量,请看:中的向量 <a1, a2, a3> 及 叉积是 <a2 * b3
<a1, a2, a3>
及
叉积是
<a2 * b3 - b2 * a3, a1 * b3 - b1 * a3, a1 * b2 - b1 * a2>
。。。但是纯2D中的“法线”没有多大意义。如果“法线”指的是垂直向量,请看:中的向量
<a1, a2, a3>
及
叉积是
<a2 * b3 - b2 * a3, a1 * b3 - b1 * a3, a1 * b2 - b1 * a2>
。。。但是纯2D中的“法线”没有多大意义。如果矩形在XY平面上,那么法线是(0,0,1)。不需要代数 如果矩形位于XY平面上,则法线为(0,0,1)。不需要代数 转到谷歌的“交叉产品”
将定义矩形边的向量作为要交叉的向量。用谷歌搜索“交叉乘积”
将定义矩形边的向量作为要交叉的向量。小心。矩形有两种可能的法线: 在平面中,它有4条法线:
小心点。矩形有两种可能的法线: 在平面中,它有4条法线:
整个矩形的法线将垂直于矩形平面(沿第三维)
如果您的意思是垂直于矩形的一条边(但与矩形在同一平面内),则可以计算边的坡度,并且法线的坡度将是其垂直于的边的坡度的负倒数。(如果边的坡度为零,则未定义。)如果要将此法线放置在矩形上,则边的中点是放置该法线的好位置。整个矩形的法线将垂直于矩形平面(沿第三维) 如果您的意思是垂直于矩形的一条边(但与矩形在同一平面内),则可以计算边的坡度,并且法线的坡度将是其垂直于的边的坡度的负倒数。(如果边的坡度为零,则未定义。)如果要将该法线放置在矩形上,则边的中点是放置该法线的好位置。Cyan 您不是在寻找由叉积或三维定义的法线。等一分钟,我会解释 编辑: 从中可以明显看出,您所寻找的只是一个垂直于直线的向量。不是垂直于平面的向量 计算
R = A - 2<A, N> N
N则是:
N = <1, 0> // for the left hand side wall
N = <-1, 0> // for the right hand side wall
N=//用于左侧墙
N=//对于右侧墙
青色
您不是在寻找由叉积或三维定义的法线。等一分钟,我会解释
编辑:
从中可以明显看出,您所寻找的只是一个垂直于直线的向量。不是垂直于平面的向量
计算
R = A - 2<A, N> N
N则是:
N = <1, 0> // for the left hand side wall
N = <-1, 0> // for the right hand side wall
N=//用于左侧墙
N=//对于右侧墙
cyanprime所寻找的是2D空间中1行的法线
该法线必须满足以下条件:
m_线*m_法线=-1
而m_线是线的大小,m_法线是法线的大小
=>m_正常=-1/m_线
如果m_line=0,显然会产生错误。所以你要特别对待这个案子
如果m_线不是0,则得到2D向量
法线向量=(1,m_法线)cyanprime所寻找的是2D空间中一条直线的法线 该法线必须满足以下条件: m_线*m_法线=-1 而m_线是线的大小,m_法线是法线的大小 =>m_正常=-1/m_线 如果m_line=0,显然会产生错误。所以你要特别对待这个案子 如果m_线不是0,则得到2D向量
法线向量=(1,m_normal)2D中的法线是在对象中呈90度角的向量,方向与应撞击对象的方向相反 这些法线有固定值,它们是: 西部(1,0); 东部(-1,0); 北(0,-1);
南部(0,1) 2D中的法线是在对象中呈90度角的向量,与应撞击对象的方向相反 这些法线有固定值,它们是: 西部(1,0); 东部(-1,0); 北(0,-1);
南部(0,1) 你说矩形的法线是什么意思?我不知道,也许像它朝哪个方向?我需要知道它朝哪个方向,这样我才能反射它的东西。@prime在2d中,矩形只能朝一个方向,好吧,也许有两个:上下。我认为那不是你想要的。那么你需要这个法线做什么?他指的是直线的法线,不是矩形的法线。你说的矩形的法线是什么意思?我不知道,也许像它朝哪个方向?我需要知道它朝哪个方向,这样我才能反射出东西。@prime在2d中,矩形只能朝一个方向,好吗,也许两个:上下。我认为那不是你想要的。那么你需要这个法线做什么呢?他指的是直线的法线,而不是矩形的法线。叉积是指三维空间中的坐标。@Mahesh:是的,我假设这就是OP的意思,因为二维矩形的法线是三维的。使用这种方法,每个矩形的法线都是(0,0,1)。@CyanPrime:它适用于二维(正如其他人所指出的,它给出了
的倍数),但答案是3D定义的…@prime在这种情况下,你需要矩形边的法线。因为你的矩形总是与你的坐标对齐,所以你的范数
<A, N> = ax*nx + ay*ny = ax*(-bx) + ay*by = ay*by - ax*bx
R = <ax, ay> - 2*(ay*by - ax*bx) * N
= <ax, by> - <2*(ay*by - ax*bx)*nx, 2*(ay*by - ax*bx)*ny>
= <ax, by> - <2*(ay*by - ax*bx)*(-bx), 2*(ay*by - ax*bx)*(by)>
= < ax + 2*bx*(ay*by - ax*bx), ay - 2*by*(ay*by - ax*bx) >
B = < 0, 100 >
B = <0, 1>
Vector length = sqrt( bx^2 + by^2 ) = sqrt( 0^2 + 1^2 ) = 1
N = <1, 0> // for the left hand side wall
N = <-1, 0> // for the right hand side wall