[请教]三点画圆的算法问题
<p>说明:前几日获得一个小程序,用于绘制任意三角形的外接圆,但是对其算法百思不得其解,</p><p>故而贴出来,恳请高手捉刀。</p><p> </p> <p>没看明白,任意三角形的外接圆直接就能画出来的</p> 本帖最后由 作者 于 2008-7-15 20:36:14 编辑 <br /><br /> <p>我的意思关键是想问:圆心点的坐标通过怎样的算法才能由三点的坐标来表示?</p><pre><font face="Courier New" color="#000000">1.如果直接用作图法很简单,现在的问题是要做成子函数的形式,方便调用(函数参数为三点的坐标)</font></pre><pre><font face="Courier New">2.上面的变换形式很方便简单,就是不知道如何得来的,请高手帮忙看看。</font></pre> 本帖最后由 作者 于 2008-7-14 9:22:26 编辑 <br /><br /> <p><font face="Courier New">P1 (getpoint "\n请输入第一点:")<br/> P2 (getpoint "\n请输入第二点:")<br/> P3 (getpoint "\n请输入第三点:")</font><font face="Courier New"></font><font face="Courier New"><br/>输入三个点;</font></p><p><font face="Courier New">P1X (car P1)<br/> P1Y (cadr P1)<br/> P2X (car P2)<br/> P2Y (cadr P2)<br/> P3X (car P3)<br/> P3Y (cadr P3)<br/>获得三个点的x,y坐标值;</font></p><p><font face="Courier New">D (* 2.0<br/> (+ (* P1Y P3X)<br/> (* P2Y P1X)<br/> (- (* P2Y P3X))<br/> (- (* P1Y P2X))<br/> (- (* P3Y P1X))<br/> (* P3Y P2X)<br/> )<br/> )<font color="#ff0000"></font><br/>算出固定的系数(请自学解析几何);</font></p><p><font face="Courier New">XC (/ (+ (* P2Y P1X P1X)<br/> (- (* P3Y P1X P1X))<br/> (- (* P2Y P2Y P1Y))<br/> (* P3Y P3Y P1Y)<br/> (* P2X P2X P3Y)<br/> (* P1Y P1Y P2Y)<br/> (* P3X P3X P1Y)<br/> (- (* P3Y P3Y P2Y))<br/> (- (* P3X P3X P2Y))<br/> (- (* P2X P2X P1Y))<br/> (* P2Y P2Y P3Y)<br/> (- (* P1Y P1Y P3Y))<br/> )<br/> D<br/> )<font color="#ff0000"></font><br/>算出圆心的x坐标值(也是解析几何的算法)</font></p><p><font face="Courier New">RAD (sqrt (+ (* (- P1X XC) (- P1X XC))<br/> (* (- P1Y YC) (- P1Y YC))<br/> )<br/> )<br/>按圆心和第一点的坐标算出圆半径,这个简单。</font></p> <p><strong><font face="Verdana" color="#61b713">多谢chenjun_nj兄提示,以前的思路是怎么解三角形,没想到解析几何的方法,</font></strong></p><p><strong><font face="Verdana" color="#61b713">应该可以用解两条中垂线交点的直线方程来解,先前的思路可能是短路了,呵呵</font></strong></p> 也就是一个“二元一次方程”
页:
[1]