Math 查找短轴点
我有两个椭圆长轴的点,还有短轴的长度,我想找到短轴的点。Math 查找短轴点,math,Math,我有两个椭圆长轴的点,还有短轴的长度,我想找到短轴的点。 我想到的一种方法是找到长轴的斜率,然后找到短轴的斜率。我们有中心点,所以我们得到一个方程。其他方程可以用距离公式得到。但这使得它是二次的。是否可能有某种线性解决方案?您可以使用90°的旋转来表示这一点。假设长轴端点是(x1,y1)和(x2,y2)。此外,假设sqrt((x1-x2)2+(y1-y2)2)=a是长轴的长度,b是短轴的长度。然后M=½(x1+x2,y1+y2)是椭圆的中心,v=½(x1-x2,y1-y2)是从该中心到长轴端点之
我想到的一种方法是找到长轴的斜率,然后找到短轴的斜率。我们有中心点,所以我们得到一个方程。其他方程可以用距离公式得到。但这使得它是二次的。是否可能有某种线性解决方案?您可以使用90°的旋转来表示这一点。假设长轴端点是(x1,y1)和(x2,y2)。此外,假设sqrt((x1-x2)2+(y1-y2)2)=a是长轴的长度,b是短轴的长度。然后M=½(x1+x2,y1+y2)是椭圆的中心,v=½(x1-x2,y1-y2)是从该中心到长轴端点之一的向量。因此,w=b/(2a)*(y1-y2,x2-x1)是从中点到短轴一个端点的向量,-w是另一个。所以M±w是两个端点。你可以用90°的旋转来表示。假设长轴端点是(x1,y1)和(x2,y2)。此外,假设sqrt((x1-x2)2+(y1-y2)2)=a是长轴的长度,b是短轴的长度。然后M=½(x1+x2,y1+y2)是椭圆的中心,v=½(x1-x2,y1-y2)是从该中心到长轴端点之一的向量。因此,w=b/(2a)*(y1-y2,x2-x1)是从中点到短轴一个端点的向量,-w是另一个。所以M±w是两个端点。所以我这样看:
- 蓝色的东西是已知的
- 红色是未知的和需要的
-长轴端点A0、A1
-长轴长度a
-短轴端点B0、B1
-短轴长度b
-椭圆中心C
// midpoint is just average of endpoints ...
C=(A0+A1)/2
// major axis size
a=|A1-A0|
// now we need vector `b0` perpendicular to major axis
// in 3D use cross product but for that you need at leas to know 1 more point not on major axis
// in 2D simply swap x,y coordinates and make one negated (that is rotation by 90 degrees) so:
b0.x=(A1.y-A0.y)
b0.y=(A0.x-A1.x)
// now make the b0 vector length equal to halve of minor axis length
b0=0.5*b0*b/|b0|
// hope you know how to compute absolute value of 2D vector (|v|=`sqrt(v.x*v.x+v.y*v.y)`)
// now the endpoints are easy
B0=C+b0
B1=C-b0
- 若你们有一些不同的输入,比如在图像上
- 例如,半轴而不是全轴,那么C点是已知的
- and或b已经减半了,所以不需要乘以0.5
- 但a需要乘以它,才能得到一半大小
- 蓝色的东西是已知的
- 红色是未知的和需要的
-长轴端点A0、A1
-长轴长度a
-短轴端点B0、B1
-短轴长度b
-椭圆中心C
- 所以我是这样看的:
// midpoint is just average of endpoints ...
C=(A0+A1)/2
// major axis size
a=|A1-A0|
// now we need vector `b0` perpendicular to major axis
// in 3D use cross product but for that you need at leas to know 1 more point not on major axis
// in 2D simply swap x,y coordinates and make one negated (that is rotation by 90 degrees) so:
b0.x=(A1.y-A0.y)
b0.y=(A0.x-A1.x)
// now make the b0 vector length equal to halve of minor axis length
b0=0.5*b0*b/|b0|
// hope you know how to compute absolute value of 2D vector (|v|=`sqrt(v.x*v.x+v.y*v.y)`)
// now the endpoints are easy
B0=C+b0
B1=C-b0
- 若你们有一些不同的输入,比如在图像上
- 例如,半轴而不是全轴,那么C点是已知的
- and或b已经减半了,所以不需要乘以0.5
- 但a需要乘以它,才能得到一半大小