2
A
回答
8
查找包含所有三个点的平面P.在这个平面上,这些点确定了一个三角形。
找到这个三角形周围的圆。让C表示这个圆圈的中心 。
查找行垂直于P和在C.
穿越它在此行中,发现这些2个点与来自 圆的期望的距离。
我忽略了退化情况。
2
有很多方法可以将其正式化。下面是他们中的一个(基本相同,阿里建议,但更多的数学):你想找到点
(a)由P1,P2,P3等距,与
(B)的距离为准确R.
首先,找到外接圆按照http://en.wikipedia.org/wiki/Circumscribed_circle的中心(见关于“一个三角形的嵌在d维外接圆”的部分):
p0 = cross(
dot(p21, p21) * p31 - dot(p31, p31) * p21,
n
)/2/dot(n, n) + p1,
p21=p2-p1
用,p31=p3-p1
,n=cross(p21,p31)
。
从项目的点(一个)位于上穿过这一点上,和垂直于包含P1,P2,P3的平面,所以它的方程是
p(t) = p0 + n * t
替代此成
一个线dist(p1, p)^2 = dot(p - p1, p - p1) = R^2
得到二次方程
dot(n, n) * t^2 - 2*dot(n, p0-p1) * t + dot(p0-p1, p0-p1) = R^2
其实,n
和(p0-p1)
是正交的,所以在左侧的第二加数为0,并且
t1 = sqrt((R^2 - dot(p0-p1, p0-p1))/ dot(n, n)),
t2 = -sqrt((R^2 - dot(p0-p1, p0-p1))/ dot(n, n))
(注意如何p1
在p0
抵消)。用p(t)
代替这些来得到答案。
相关问题
- 1. 如何在给定中心点和半径大小时绘制一个球体?
- 2. 如何在Matlab中绘制球体时定义半径?
- 3. iOS-与圆心和半径
- 4. 半径和从OpenLayer一个Circle 3
- 5. 如何在Matlab中绘制具有不同半径和不同原点的点周围的3D球体
- 6. Java中的边界框算法只有中心点和半径
- 7. JavaFX:如何找到沿圆的特定点的x,y,只给出半径和中心x,y的位置?
- 8. 如何为边界球体的给定半径设置gluPerspective()的zNear和zFar值?
- 9. 如何通过两点和半径大小来计算椭圆的中心
- 10. 如何计算具有给定中心,角度和半径的点?
- 11. 如何计算给定中心的终点加上半径和角度?
- 12. c#我如何找到3点的中心?
- 13. 找到具有半径和角度的点
- 14. 在Javascript中找到距离半圆中心n%的点?
- 15. 从中心和半径创建一个SqlGeography多边形圈
- 16. 如何将点投影到球体上
- 17. 如何找到经度和纬度在半径内?
- 18. 如何在子路径上找到Asp.net核心站点
- 19. 从已知XYZ角度,半径和原点的点寻找3D坐标?
- 20. Swift:在MKMapView中绘制半球体
- 21. 找到一个圆的半径,直径,面积和圆周
- 22. OpenGL - 渲染具有固定像素半径的球体
- 23. 非零半径球体之间的碰撞检测
- 24. 如何将角点半径应用到UIView中没有问题?
- 25. 2D点到球体上的
- 26. 如何从中心找到旋转矩形的顶点?
- 27. 找出加盖矩形物体的方向,长度和半径
- 28. 如何在Unity 5中制作球体半形状
- 29. SceneKit:让子球体在半透明父球体内可见?
- 30. 从NE SW区域查找圆半径