hujunhua 发表于 2012-7-24 18:08:00

参照35楼的公式,如果没有什么内部矩阵函数,就用下述过程:
A(x1,y1),B(x2,y2),C(x3,y3)
x1=x1-x3 /*先平移C到原点*/
y1=y1-y3
x2=x2-x3
y2=y2-y3
Area=2*(x1*y2-x2*y1) /*计算三角形的4倍面积*/
a=x2^2+y2^2 /*计算两个边长平方*/
b=x1^2+y1^2
xc=x3-(a*y1-b*y2)/Area /*计算圆心坐标*/
yc=y3-(a*x1-b*x2)/Area

mathematica 发表于 2012-7-24 18:42:27


参照35楼的公式,如果没有什么内部矩阵函数,就用下述过程:
A(x1,y1),B(x2,y2),C(x3,y3)
/*先平移C到原点,并且计算平移后A和B的坐标*/
x1=x1-x3
y1=y1-y3
x2=x2-x3
y2=y2-y3
/*计算平移后的外心的坐标,最后再把C点平移回去*/
Area=2*(x1*y2-x2*y1) /*计算三角形的4倍面积*/
a=x2^2+y2^2 /*计算两个边长平方*/
b=x1^2+y1^2
xc=x3-(a*y1-b*y2)/Area /*计算圆心坐标*/
yc=y3-(a*x1-b*x2)/Area
hujunhua 发表于 2012-7-24 18:08 http://bbs.emath.ac.cn/static/image/common/back.gif

我在35起初贴的公式有问题,现在我已经修正过了,
本来是在后面跟帖修正的,结果被郭以为是重复贴删除了,
现在我重新编辑了一下,
35楼的链接http://bbs.emath.ac.cn/viewthread.php?tid=4482&page=1&fromuid=865#pid44437
参照35楼的公式,如果没有什么内部矩阵函数,就用下述过程:
A(x1,y1),B(x2,y2),C(x3,y3)
x1=x1-x3 /*先平移C到原点*/
y1=y1-y3
x2=x2-x3
y2=y2-y3
Area=2*(x1*y2-x2*y1) /*计算三角形的4倍面积,不是两倍,是平行四边形面积的两倍*/
a=x2^2+y2^2 /*计算两个边长平方*/
b=x1^2+y1^2
xc=x3-(a*y1-b*y2)/Area /*计算圆心坐标*/
yc=y3+(a*x1-b*x2)/Area/*这行代码修正后的结果*/

mathematica 发表于 2012-7-24 18:49:05

参照35楼的公式,如果没有什么内部矩阵函数,就用下述过程:
A(x1,y1),B(x2,y2),C(x3,y3)
x1=x1-x3 /*先平移C到原点*/
y1=y1-y3
x2=x2-x3
y2=y2-y3
Area=2*(x1*y2-x2*y1) /*计算三角形的4倍面积*/
a=x2^2+ ...
hujunhua 发表于 2012-7-24 18:08 http://bbs.emath.ac.cn/static/image/common/back.gif
你可以看着32楼编程的
http://bbs.emath.ac.cn/viewthread.php?tid=4482&page=4&fromuid=865#pid44434

mathematica 发表于 2012-7-24 18:50:35

就为了扣这几步乘法,在这边使劲******************

mathematica 发表于 2012-7-24 19:21:00

(*计算三角形的外心的坐标*)
(*http://bbs.emath.ac.cn/viewthread.php?tid=4482&page=4&fromuid=865#pid44434*)
(*A(x1,y1),B(x2,y2),C(x3,y3)*)
(*先把A平移到原点,计算平移后的B和C两点的坐标*)
x2=x2-x1;y2=y2-y1;(*平移后B的坐标*)
x3=x3-x1;y3=y3-y1;(*平移后C的坐标*)
(*计算平移后的外心的坐标*)
xy2=x2^2+y2^2;
xy3=x3^2+y3^2;
s=2*(x2*y3-x3*y2);(*三角形面积的四倍,平行四边形的两倍*)
xc=(-y2*xy3+y3*xy2)/s;(*平移后外心的横坐标*)
yc=-(-x2*xy3+x3*xy2)/s;(*平移后外心的纵坐标,注意负号*)
(*把三角形再平移回去*)
xc=xc+x1;
yc=yc+y1;

mathematica语言版本的代码,很容易转化成C语言的!!!!!!!

mathematica 发表于 2012-7-24 19:24:00

上面的帖子是1001帖,号称一千零一!

mathematica 发表于 2012-7-24 20:07:38

我已经将郭的计算量下降到原来的76%了,算是下降了1/4,应该还不错吧

gxqcn 发表于 2012-7-25 09:04:47

(*计算三角形的外心的坐标*)
(*http://bbs.emath.ac.cn/viewthread.php?tid=4482&page=4&fromuid=865#pid44434*)
(*A(x1,y1),B(x2,y2),C(x3,y3)*)
(*先把A平移到原点,计算平移后的B和C两点的坐标*)
x2=x2-x1;y2= ...
mathematica 发表于 2012-7-24 19:21 http://bbs.emath.ac.cn/static/image/common/back.gif

还可再优化的:
将s取倒数,可将后面的两次除法转化为乘法,从而在整体上增加一次乘法但减少了一次除法。

另外,这个题除了要得到圆心坐标外,还同时需得到半径,只是没特别指明而已。
不过,在得到圆心后,再求半径已毫无悬念。

mathematica 发表于 2012-7-25 09:35:59



还可再优化的:
将s取倒数,可将后面的两次除法转化为乘法,从而在整体上增加一次乘法但减少了一次除法。

另外,这个题除了要得到圆心坐标外,还同时需得到半径,只是没特别指明而已。
不过,在得到圆心后, ...
gxqcn 发表于 2012-7-25 09:04 http://bbs.emath.ac.cn/static/image/common/back.gif
两次除法能够变成一次乘法????????

gxqcn 发表于 2012-7-25 09:38:34

请仔细读贴后再回复。。。

应该是:增加两次乘法,减少1次除法。还是划算的。
页: 1 2 3 4 [5] 6 7 8
查看完整版本: 三角形外心坐标公式