博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
已知空间三个点,解算外接圆圆心坐标,C++编程实现
阅读量:4363 次
发布时间:2019-06-07

本文共 1488 字,大约阅读时间需要 4 分钟。

struct PT3{    double x, y, z;};int solveCenterPointOfCircle(std::vector
pt, double centerpoint[]){ double a1, b1, c1, d1; double a2, b2, c2, d2; double a3, b3, c3, d3; double x1 = pt[0].x, y1 = pt[0].y, z1 = pt[0].z; double x2 = pt[1].x, y2 = pt[1].y, z2 = pt[1].z; double x3 = pt[2].x, y3 = pt[2].y, z3 = pt[2].z; a1 = (y1*z2 - y2*z1 - y1*z3 + y3*z1 + y2*z3 - y3*z2); b1 = -(x1*z2 - x2*z1 - x1*z3 + x3*z1 + x2*z3 - x3*z2); c1 = (x1*y2 - x2*y1 - x1*y3 + x3*y1 + x2*y3 - x3*y2); d1 = -(x1*y2*z3 - x1*y3*z2 - x2*y1*z3 + x2*y3*z1 + x3*y1*z2 - x3*y2*z1); a2 = 2 * (x2 - x1); b2 = 2 * (y2 - y1); c2 = 2 * (z2 - z1); d2 = x1 * x1 + y1 * y1 + z1 * z1 - x2 * x2 - y2 * y2 - z2 * z2; a3 = 2 * (x3 - x1); b3 = 2 * (y3 - y1); c3 = 2 * (z3 - z1); d3 = x1 * x1 + y1 * y1 + z1 * z1 - x3 * x3 - y3 * y3 - z3 * z3; centerpoint[0] = -(b1*c2*d3 - b1*c3*d2 - b2*c1*d3 + b2*c3*d1 + b3*c1*d2 - b3*c2*d1) /(a1*b2*c3 - a1*b3*c2 - a2*b1*c3 + a2*b3*c1 + a3*b1*c2 - a3*b2*c1); centerpoint[1] = (a1*c2*d3 - a1*c3*d2 - a2*c1*d3 + a2*c3*d1 + a3*c1*d2 - a3*c2*d1) /(a1*b2*c3 - a1*b3*c2 - a2*b1*c3 + a2*b3*c1 + a3*b1*c2 - a3*b2*c1); centerpoint[2] = -(a1*b2*d3 - a1*b3*d2 - a2*b1*d3 + a2*b3*d1 + a3*b1*d2 - a3*b2*d1) /(a1*b2*c3 - a1*b3*c2 - a2*b1*c3 + a2*b3*c1 + a3*b1*c2 - a3*b2*c1); return 0;}

推导过程参考:

http://blog.csdn.net/yanmy2012/article/details/8111600

转载于:https://www.cnblogs.com/xingzhensun/p/5401309.html

你可能感兴趣的文章
MySQL:按前缀批量删除表格
查看>>
Route学习笔记之Area的Route注册
查看>>
构建之法--软件工程师自我测评表
查看>>
电子书搜索
查看>>
SQO2008配置管理工具服务显示远程过程调用失败
查看>>
【HDOJ】1009 FatMouse' Trade
查看>>
谷歌跨域
查看>>
使用葡萄城报表,轻松实现高度精准的报表套打
查看>>
Linux命令
查看>>
unicode ascii 互转 函数 C实现 MultiByteToWideChar/WideCharToMultiByte 详解
查看>>
大三第一学期实验报告
查看>>
mysql远程链接
查看>>
nginx location配置
查看>>
Easy Install详细参数
查看>>
选课系统
查看>>
最简实例演示asp.net5中用户认证和授权(2)
查看>>
ubuntu rhythmbox乱码解决方法
查看>>
LeetCode题解之Univalued Binary Tree
查看>>
线程池学习研究-(自实现)2
查看>>
ubuntu下安装新字体
查看>>