社区
C#
帖子详情
空间三点求圆心及半径????
500公里之外
2011-05-23 10:06:59
知道空间中3点坐标
A(X1,Y1,Z1)
B(X2,Y2,Z2)
C(X3,Y3,Z3)
求所在圆的圆心坐标和半径
希望能提供出代码,非常感谢。
...全文
2307
38
打赏
收藏
空间三点求圆心及半径????
知道空间中3点坐标 A(X1,Y1,Z1) B(X2,Y2,Z2) C(X3,Y3,Z3) 求所在圆的圆心坐标和半径 希望能提供出代码,非常感谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
38 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bao060301103
2011-11-16
打赏
举报
回复
HPoint pointCenter;
float * plant;
float a, b, c, d;
float A, B, C, D, C1, D1;
plant = ComputePlant(point1, point2, point3);//计算三点确定的平面
a = *(plant++);
b = *(plant++);
c = *(plant++);
d = *(plant++);
if(d != 0){
A = 0.5*(point2.x*point2.x - point1.x*point1.x + point2.y*point2.y - point1.y*point1.y + point2.z*point2.z - point1.z*point1.z) + (point2.z - point1.z)*c/d;
B = 0.5*(point3.x*point3.x - point1.x*point1.x + point3.y*point3.y - point1.y*point1.y + point3.z*point3.z - point1.z*point1.z) + (point3.z - point1.z)*c/d;}
else
{ A = 0.5*(point2.x*point2.x - point1.x*point1.x + point2.y*point2.y - point1.y*point1.y + point2.z*point2.z - point1.z*point1.z);
B = 0.5*(point3.x*point3.x - point1.x*point1.x + point3.y*point3.y - point1.y*point1.y + point3.z*point3.z - point1.z*point1.z);}
if(c != 0)
{
C = point2.x - point1.x - point2.z*a/c + point1.z*a/c;
D = point2.z - point1.y - point2.z*b/c + point1.z*b/c;
C1= point3.x - point1.x - point3.z*a/c + point1.z*a/c;
D1= point3.y - point1.y - point3.z*b/c + point1.z*b/c;
}
else
{
C = point2.x - point1.x - point2.z*a/c + point1.z*a/c;
D = point2.z - point1.y - point2.z*b/c + point1.z*b/c;
C1= point3.x - point1.x - point3.z*a/c + point1.z*a/c;
D1= point3.y - point1.y - point3.z*b/c + point1.z*b/c;
}
pointCenter.x = (A*D1 - B*D)/(C*D1 - C1*D);
pointCenter.y = (A*C1 - C*B)/(D*C1 - C*D1);
pointCenter.z = -(a*pointCenter.x + b*pointCenter.y + d)/c;
bios8086
2011-05-24
打赏
举报
回复
根据解析几何的知识 (x-o1)^2 +(y-o1)^2 =r^2 所以你必须知道三个点 才能确定一个圆形
(x-o1)^2 +(y-o2)^2 +(z-o3)=r^2 您看 要算出这个方程 要几个点 ?
bios8086
2011-05-24
打赏
举报
回复
您到底是确定二维的圆 还是三维的球体啊!
我都被这些叽叽喳喳的搞晕了
shaya02
2011-05-24
打赏
举报
回复
这是思路是对的,有点麻烦
[Quote=引用 16 楼 colinfang2006 的回复:]
最简单的计算方法,就是利用两点连线的中垂线过圆心。
AB中垂线连线方程 AC中垂线连线方程
2个一维方程解出来就行了,不过依然比较复杂。
[/Quote]
shaya02
2011-05-24
打赏
举报
回复
似乎是外接圆
[Quote=引用 18 楼 gpshq 的回复:]
引用 9 楼 wwucw 的回复:
l21 = Math.Sqrt(l2);
l31 = Math.Sqrt(l3);
l11 = Math.Sqrt(l1);
这3点是圆心
+1
就是求圆内接三角形中心【(x1+x2+x3)/3,(y1+y2+y3)/3,(z1+z2+z3)/3】
class MyPoint
{
public int x;
public i……
[/Quote]
shaya02
2011-05-24
打赏
举报
回复
3点就是一个面,哪来什么球,就是求圆心,不是什么球心
500公里之外
2011-05-24
打赏
举报
回复
[Quote=引用 26 楼 matrixcl 的回复:]
3点无法确定球心。
首先3点只能确定一个平面。(如果3点有重合或共线,就更不用说了。)
同时3点能确定这个平面上的一个圆。
平面上有一条穿过这个圆心的垂线。垂线上任意点都可以是球心。
[/Quote]
可以这样理解,我这3点就是实际中对一个圆形物体测量得出的3点,这3点在这个物体的边缘上。
500公里之外
2011-05-24
打赏
举报
回复
[Quote=引用 26 楼 matrixcl 的回复:]
3点无法确定球心。
首先3点只能确定一个平面。(如果3点有重合或共线,就更不用说了。)
同时3点能确定这个平面上的一个圆。
平面上有一条穿过这个圆心的垂线。垂线上任意点都可以是球心。
[/Quote]
不是球心,是圆心。
还有3点一定在圆上,且不会重合,更不可能在一条直线上。
636f6c696e
2011-05-24
打赏
举报
回复
+1
所以说最后一个方程是:这个圆心坐标在ABC所在平面上
[Quote=引用 26 楼 matrixcl 的回复:]
3点无法确定球心。
首先3点只能确定一个平面。(如果3点有重合或共线,就更不用说了。)
同时3点能确定这个平面上的一个圆。
平面上有一条穿过这个圆心的垂线。垂线上任意点都可以是球心。
[/Quote]
matrixcl
2011-05-24
打赏
举报
回复
3点无法确定球心。
首先3点只能确定一个平面。(如果3点有重合或共线,就更不用说了。)
同时3点能确定这个平面上的一个圆。
平面上有一条穿过这个圆心的垂线。垂线上任意点都可以是球心。
636f6c696e
2011-05-24
打赏
举报
回复
最后个方程是错误的,为什么AB长为半径?
[Quote=引用 20 楼 jq_whh 的回复:]
已知空间上三点A(X1,Y1,Z1),B(X2,Y2,Z2),C(X3,Y3,Z3),
设在A,B,C所在平面上确定的圆的圆心O坐标(X,Y,Z),半径r
则满足下面公式:
(X1-X)²+(Y1-Y)²+(Z1-Z)²=r²
(X2-X)²+(Y2-Y)²+(Z2-Z)²=r²
(X3-X)²+(Y3-Y)²+(Z3-Z)²=r²
(X2-X1)²+(Y2-Y1)²+(Z2-Z1)……
[/Quote]
636f6c696e
2011-05-24
打赏
举报
回复
只不过你运气好,隐式转换正好对了。
换成300 030 -300你的算法就原形毕露了。
首先搞清楚,内接圆心不等于重心好不好?
[Quote=引用 19 楼 gpshq 的回复:]
引用 11 楼 colinfang2006 的回复:
楼上公式有问题
100 010 -100
带进去就不不对
圆心应该是000
带进去 圆心是 0 0 0 刚测试了一下
[/Quote]
636f6c696e
2011-05-24
打赏
举报
回复
你和9楼的算法有半毛钱的关系么?
为什么要+1?
[Quote=引用 18 楼 gpshq 的回复:]
引用 9 楼 wwucw 的回复:
l21 = Math.Sqrt(l2);
l31 = Math.Sqrt(l3);
l11 = Math.Sqrt(l1);
这3点是圆心
+1
就是求圆内接三角形中心【(x1+x2+x3)/3,(y1+y2+y3)/3,(z1+z2+z3)/3】
class MyPoint
{
public int x;
public i……
[/Quote]
500公里之外
2011-05-24
打赏
举报
回复
[Quote=引用 21 楼 bios8086 的回复:]
楼主啊!要是你这三个点两两之间的距离相等怎么办
[/Quote]
我题目可能说得不够清楚
补充下:
这已知的3个点一定是在同一个圆上的。
嘻皮士
2011-05-24
打赏
举报
回复
应该和求平面圆心和半径一个道理吧。。。
连接三点生成一个三角形,然后求其外接圆的圆心,求出圆心,即可算出半径。。
bios8086
2011-05-24
打赏
举报
回复
[Quote=引用 35 楼 wkxgyg 的回复:]
总算找到一个公式了
http://blog.sina.com.cn/s/blog_648868460100h2b8.html
现在关键现在是如何求这个
三元一次方程组了。。
[/Quote]
哦,你看看人家的博客写的多清楚的意思!唉 你
500公里之外
2011-05-24
打赏
举报
回复
总算找到一个公式了
http://blog.sina.com.cn/s/blog_648868460100h2b8.html
现在关键现在是如何求这个
三元一次方程组了。。
jimh
2011-05-23
打赏
举报
回复
平面3点可以确定一个圆,立体的至少要4个点吧?
636f6c696e
2011-05-23
打赏
举报
回复
最简单的计算方法,就是利用两点连线的中垂线过圆心。
AB中垂线连线方程 AC中垂线连线方程
2个一维方程解出来就行了,不过依然比较复杂。
wanghui0380
2011-05-23
打赏
举报
回复
哎,如果lz非要啥平面上滴
那么,其垂直平分线的交点就是
但是平面上来说,当且仅当3线垂直平分线唯一的时候存在圆,所以这个条件并不是时时满足地
加载更多回复(18)
由
三点
三维坐标计算圆
半径
和
圆心
位置
通过输入任意
三点
空间
坐标自动判断
三点
是否在一条直线上,若不在则
求
三点
外接圆的
圆心
位置和
半径
,计算精度可调节。解决了“知
三点
求
圆心
半径
”程序对于某些点无法计算的缺陷。
根据3点坐标
求
圆心
和
半径
..c
c语言实现的根据3个点的(x, y)坐标值,计算出圆的
圆心
和
半径
的算法.
EXCEL已知
三点
坐标
求
外接圆的直径和
圆心
坐标
输入三个点的直角坐标系数值,计算
三点
拟合的
圆心
位置以及圆
半径
MATLAB拟合
求
圆心
MATLAB拟合
求
圆心
和
半径
,利用在excel表中的数据
求
出
圆心
坐标和
半径
大小,并标记显示。已运行成功,无错误。
通过 3 个点拟合圆:一个容错函数,用于计算给定三个 xy 点的
圆心
和
半径
-matlab开发
数学背景在http://www.regentsprep.org/regents/math/geometry/gcg6/RCir.htm 中提供输入: ABC 是一个 [3 x 2n] 数组。 每两列代表一组三个点,它们位于一个圆上。 示例: [-1 2;2 5;1 1] 表示笛卡尔 (x,y) 坐标中的点 (-1,2)、(2,5) 和 (1,1) 的集合。 输出: R是对应于每组三个点的[1 xn]圆
半径
阵列。 xcyc 是一个 [2 xn]
圆心
数组,其中每一列是 [xc_i;yc_i],其中 i 对应于块 [3 x 2i-1: ABC 的 2i] 使用示例:我想计算中心和
半径
: * 通过点 (-1,0)、(0,1) 和 (1,0) 的圆*穿过点(-1 0),(0,0)和(0,1)的圆执行此操作的代码如下: >> ABC=[[-1 0;0 1;1 0] [-1 0;0 0;0 1]]
C#
110,566
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章