外接球算法

转载 2012年03月30日 16:51:58

Circumsphere

DOWNLOAD Mathematica Notebook

A sphere circumscribed in a given solid. Its radius is called the circumradius. By analogy with the equation of the circumcircle, the equation for the circumsphere of the tetrahedron with polygon vertices (x_i,y_i,z_i) for i=1, ..., 4 is

 |x^2+y^2+z^2 x y z 1; x_1^2+y_1^2+z_1^2 x_1 y_1 z_1 1; x_2^2+y_2^2+z_2^2 x_2 y_2 z_2 1; x_3^2+y_3^2+z_3^2 x_3 y_3 z_3 1; x_4^2+y_4^2+z_4^2 x_4 y_4 z_4 1|=0.
(1)

Expanding the determinant,

 a(x^2+y^2+z^2)-(D_xx+D_yy+D_zz)+c=0,
(2)

where

 a=|x_1 y_1 z_1 1; x_2 y_2 z_2 1; x_3 y_3 z_3 1; x_4 y_4 z_4 1|,
(3)

D_x is the determinant obtained from the matrix

 D=[x_1^2+y_1^2+z_1^2 x_1 y_1 z_1 1; x_2^2+y_2^2+z_2^2 x_2 y_2 z_2 1; x_3^2+y_3^2+z_3^2 x_3 y_3 z_3 1; x_4^2+y_4^2+z_4^2 x_4 y_4 z_4 1]
(4)

by discarding the x_i column (and taking a plus sign) and similarly for D_y (this time taking the minus sign) and D_z (again taking the plus sign)

D_x = +|x_1^2+y_1^2+z_1^2 y_1 z_1 1; x_2^2+y_2^2+z_2^2 y_2 z_2 1; x_3^2+y_3^2+z_3^2 y_3 z_3 1; x_4^2+y_4^2+z_4^2 y_4 z_4 1|
(5)
D_y = -|x_1^2+y_1^2+z_1^2 x_1 z_1 1; x_2^2+y_2^2+z_2^2 x_2 z_2 1; x_3^2+y_3^2+z_3^2 x_3 z_3 1; x_4^2+y_4^2+z_4^2 x_4 z_4 1|
(6)
D_z = +|x_1^2+y_1^2+z_1^2 x_1 y_1 1; x_2^2+y_2^2+z_2^2 x_2 y_2 1; x_3^2+y_3^2+z_3^2 x_3 y_3 1; x_4^2+y_4^2+z_4^2 x_4 y_4 1|
(7)

and c is given by

 c=|x_1^2+y_1^2+z_1^2 x_1 y_1 z_1; x_2^2+y_2^2+z_2^2 x_2 y_2 z_2; x_3^2+y_3^2+z_3^2 x_3 y_3 z_3; x_4^2+y_4^2+z_4^2 x_4 y_4 z_4|.
(8)

Completing the square gives

 a(x-(D_x)/(2a))^2+a(y-(D_y)/(2a))^2+a(z-(D_z)/(2a))^2-(D_x^2+D_y^2+D_z^2)/(4a)+c=0
(9)

which is a sphere of the form

 (x-x_0)^2+(y-y_0)^2+(z-z_0)^2=r^2,
(10)

with circumcenter

x_0 = (D_x)/(2a)
(11)
y_0 = (D_y)/(2a)
(12)
z_0 = (D_z)/(2a)
(13)

and circumradius

 r=(sqrt(D_x^2+D_y^2+D_z^2-4ac))/(2|a|).
(14)
Circumsphere

相关文章推荐

游戏盒子接球

用VC写了一个小小的游戏,有好多小球下落,玩家可以控制一个盒子左右移动(方向键),来接小球,最后会显示接到的小球的数目。就是这么简单,代码如下:/* 盒子接球 copyright: 圣石 date: ...

汇编语言编写的一个“接球游戏”

学习汇编语言一学期了,为了完成期末作业,就花了10多个小时写了个“接球游戏”。游戏虽然很简单,但是完成后很开心,毕竟是自己用汇编语言写的第一个程序。              ...

游戏盒子接球最终版

有几个小地方做了改进,倒计时调用系统函数GetTickCount()来进行计算的,更加方便,其他还有一些地方做出了优化,大家可以自己对比了看一下。这里还要感谢杨伟大哥提出的宝贵建议。 代码如下: ...

C++ 小程式 接球遊戲

  • 2014-11-25 23:22
  • 380KB
  • 下载

c语言接球游戏

经典算法题14-外排序

引入我们要处理一个大文件,对其中的数值排序,一般我们想到的方法就是用排序算法,像快速排序、归并排序、选择排序、堆排序、冒泡排序等。但是这些排序算法使用的前提是需要把数据读入到内存,现在大文件太大,内存...

接球小游戏

  • 2014-03-19 14:23
  • 2.65MB
  • 下载

[算法-java] 将一个矩阵按照从外向里以顺时针的顺序打印出每一元素

import java.util.*;import static java.lang.System.out; /** * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, * 例如,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)