明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1486|回复: 5

请教空间四个点如何建模生成球体

[复制链接]
发表于 2012-7-27 16:41:50 | 显示全部楼层 |阅读模式
请教各位:
   如何不共面的任意空间四个点(已知坐标)如何建模生成过该四点的球体?
发表于 2012-7-27 23:19:05 | 显示全部楼层
这个似乎只有计算?
球面上任意三点组成的圆,在此圆心的法线,是必通过球心的
由此选4点中的三点,做两条这样的法线,即可得到球心
发表于 2012-7-27 23:39:10 | 显示全部楼层
本帖最后由 chmenf087 于 2012-7-27 23:41 编辑

1. 三点生成一平面plane
2. 取得法向量
3. 三点生成圆
4. 取得圆心坐标
5. 圆心处沿法线向量正反方向生成两条Ray
6. 选取不重复的三点重复1-5
7. 求四条Ray交点(交点即圆心)无交点则四点共面退出
8. 由圆心和其中一点求半径R
9. 建立Sphere
完成
发表于 2012-7-28 10:41:12 | 显示全部楼层
            List<Point3d> pts =
                new List<Point3d>
                {
                    new Point3d(0,0,0),
                    new Point3d(3,0,0),
                    new Point3d(0,3,0),
                    new Point3d(0,0,3)
                };

            //获取三点所在圆的法向量
            Func<Point3d,Point3d,Point3d,Line3d> getcn =
                (Point3d p1, Point3d p2, Point3d p3)
                =>
                {
                    var ca = new CircularArc3d(p1, p2, p3);
                    return new Line3d(ca.Center, ca.Normal);
                };

            var l3d1 = getcn(pts[0], pts[1], pts[2]);
            var l3d2 = getcn(pts[3], pts[1], pts[2]);
            
            if (l3d1.IsParallelTo(l3d2))
            {

            }
            else
            {
                var ipts = l3d1.IntersectWith(l3d2);
                if (ipts.Length == 0)
                {
                    var cen = ipts[0];
                    var r = (pts[0] - cen).Length;
                    var sphere = new Sphere(r, cen);
                }
            }
发表于 2012-7-30 13:49:49 | 显示全部楼层
任意4点,并不是都一定在球体表面.
也就是说,不一定存在这样的球体.
(x-a)^2+(y-b)^2+(z-c)^2=r^2
坐标带到方程里,有解才行
 楼主| 发表于 2012-7-30 16:33:49 | 显示全部楼层
完美解决!
多谢雪山飞狐_lzh 和chmenf087 !
通过两位才认识到NET开发有CircularArc3d、Line3d等强大的类处理功能。
——简单几行代码解决了数值计算中上百行才能完成的数学难题。
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:46 , Processed in 0.163628 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表