gisshow 发表于 2008-7-10 23:47:00

[请教]三点画圆的算法问题

<p>说明:前几日获得一个小程序,用于绘制任意三角形的外接圆,但是对其算法百思不得其解,</p><p>故而贴出来,恳请高手捉刀。</p><p>&nbsp;</p>

seadar 发表于 2008-7-11 17:48:00

<p>没看明白,任意三角形的外接圆直接就能画出来的</p>

gisshow 发表于 2008-7-13 14:11:00

本帖最后由 作者 于 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>

chenjun_nj 发表于 2008-7-14 09:16:00

本帖最后由 作者 于 2008-7-14 9:22:26 编辑 <br /><br /> <p><font face="Courier New">P1&nbsp; (getpoint "\n请输入第一点:")<br/>&nbsp;P2&nbsp; (getpoint "\n请输入第二点:")<br/>&nbsp;P3&nbsp; (getpoint "\n请输入第三点:")</font><font face="Courier New"></font><font face="Courier New"><br/>输入三个点;</font></p><p><font face="Courier New">P1X (car P1)<br/>&nbsp;P1Y (cadr P1)<br/>&nbsp;P2X (car P2)<br/>&nbsp;P2Y (cadr P2)<br/>&nbsp;P3X (car P3)<br/>&nbsp;P3Y (cadr P3)<br/>获得三个点的x,y坐标值;</font></p><p><font face="Courier New">D&nbsp;&nbsp; (* 2.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (+ (* P1Y P3X)<br/>&nbsp;&nbsp;&nbsp; (* P2Y P1X)<br/>&nbsp;&nbsp;&nbsp; (- (* P2Y P3X))<br/>&nbsp;&nbsp;&nbsp; (- (* P1Y P2X))<br/>&nbsp;&nbsp;&nbsp; (- (* P3Y P1X))<br/>&nbsp;&nbsp;&nbsp; (* P3Y P2X)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<font color="#ff0000"></font><br/>算出固定的系数(请自学解析几何);</font></p><p><font face="Courier New">XC&nbsp; (/ (+ (* P2Y P1X P1X)<br/>&nbsp;&nbsp;&nbsp; (- (* P3Y P1X P1X))<br/>&nbsp;&nbsp;&nbsp; (- (* P2Y P2Y P1Y))<br/>&nbsp;&nbsp;&nbsp; (* P3Y P3Y P1Y)<br/>&nbsp;&nbsp;&nbsp; (* P2X P2X P3Y)<br/>&nbsp;&nbsp;&nbsp; (* P1Y P1Y P2Y)<br/>&nbsp;&nbsp;&nbsp; (* P3X P3X P1Y)<br/>&nbsp;&nbsp;&nbsp; (- (* P3Y P3Y P2Y))<br/>&nbsp;&nbsp;&nbsp; (- (* P3X P3X P2Y))<br/>&nbsp;&nbsp;&nbsp; (- (* P2X P2X P1Y))<br/>&nbsp;&nbsp;&nbsp; (* P2Y P2Y P3Y)<br/>&nbsp;&nbsp;&nbsp; (- (* P1Y P1Y P3Y))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<font color="#ff0000"></font><br/>算出圆心的x坐标值(也是解析几何的算法)</font></p><p><font face="Courier New">RAD (sqrt (+ (* (- P1X XC) (- P1X XC))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (* (- P1Y YC) (- P1Y YC))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>按圆心和第一点的坐标算出圆半径,这个简单。</font></p>

gisshow 发表于 2008-7-15 20:40:00

<p><strong><font face="Verdana" color="#61b713">多谢chenjun_nj兄提示,以前的思路是怎么解三角形,没想到解析几何的方法,</font></strong></p><p><strong><font face="Verdana" color="#61b713">应该可以用解两条中垂线交点的直线方程来解,先前的思路可能是短路了,呵呵</font></strong></p>

winabcd 发表于 2008-8-19 09:04:00

也就是一个“二元一次方程”
页: [1]
查看完整版本: [请教]三点画圆的算法问题