日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三点法创建圆

發布時間:2025/3/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三点法创建圆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

包含頭文件:#include <math.h>

求冪函數:long lpow = pow(x,y);//其作用是計算x的y次方。x、y及函數值都是double型

絕對值: double dfabs = fabs(x ); //求 double 型x的絕對值 , 計算|x|, 當x不為負時返回 x,否則返回 -x

開平方: float sqrt (float),double sqrt (double),double long sqrt(double long) // 一個非負實數的平方根, 注意沒有sqrt (int),但是返回值可以為int

算法原理為:

假設圓心坐標為(x,y,z) ,已知的三點坐標分別為(x 1 ,y 1 ,z 1 ) 、 (x 2 ,y 2 ,z 2 )和(x 3 ,y 3 ,z 3 ) ,可以直接建立的方程是:

計算出圓心位置之后,就可以使用計算兩點距離的函數,計算出圓形的半徑。

// 使用數學方法 double xysm, xyse, xy; AcGePoint3d ptCenter; double radius; xy = pow(pt1[X], 2) + pow(pt1[Y], 2); xyse = xy - pow(pt3[X], 2) - pow(pt3[Y], 2); xysm = xy - pow(pt2[X], 2) - pow(pt2[Y], 2); xy = (pt1[X] - pt2[X]) * (pt1[Y] - pt3[Y]) - (pt1[X] - pt3[X]) * (pt1[Y] - pt2[Y]); // 判斷參數有效性 if (fabs(xy) < 0.000001) { AfxMessageBox("所輸入的參數無法創建圓形!"); return 0; } // 獲得圓心和半徑 ptCenter[X] = (xysm * (pt1[Y] - pt3[Y]) - xyse * (pt1[Y] - pt2[Y])) / (2 * xy); ptCenter[Y] = (xyse * (pt1[X] - pt2[X]) - xysm * (pt1[X] - pt3[X])) / (2 * xy); ptCenter[Z] = 0; radius = sqrt((pt1[X] - ptCenter[X]) * (pt1[X] - ptCenter[X]) + (pt1[Y] - ptCenter[Y]) * (pt1[Y] - ptCenter[Y])); if (radius < 0.000001) { AfxMessageBox("半徑過小!"); return 0; }

// 使用幾何類

AcGeCircArc2d geArc(pt1, pt2, pt3); AcGePoint3d ptCenter(geArc.center().x, geArc.center().y, 0);

?

轉載于:https://my.oschina.net/u/2930533/blog/1578117

總結

以上是生活随笔為你收集整理的三点法创建圆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。