首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么判断三角形三点构成的圆的圆心位置是否在三角形内

2012-02-07 
如何判断三角形三点构成的圆的圆心位置是否在三角形内?三角形三点构成一个圆,请问圆心位置在三角形内还是

如何判断三角形三点构成的圆的圆心位置是否在三角形内?
三角形三点构成一个圆,请问圆心位置在三角形内还是外面?已知三点坐标,和圆心坐标。最好给代码

[解决办法]
这么简单的题目如果都不自己动手,软件编程是不可能学好的,还是自己做吧
首先:既然你有三个顶点,你是不需要提供圆心的,外心是唯一的,有三个点可以唯一确定外心
其次:判断外心位置只要知道三边长度即可,如果c是最长边,且a*a+b*b-c*c <0则三角形肯定是钝角三角形,而外心在三角形外和三角形是钝角三角形等价 

探讨
三角形三点构成一个圆,请问圆心位置在三角形内还是外面?已知三点坐标,和圆心坐标。最好给代码

[解决办法]
只需判断三角形是钝角、直角还是锐角。
C/C++ code
#include <iostream>#include <cmath>using namespace std;class Point{public:    Point();    double x;    double y;};int main(){    Point a,b,c;    cout<<"Put in three points' coordinates:\n";    cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y;    double ab,bc,ca;    ab=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));    bc=sqrt((b.x-c.x)*(b.x-c.x)+(b.y-c.y)*(b.y-c.y));    ca=sqrt((c.x-a.x)*(c.x-a.x)+(c.y-a.y)*(c.y-a.y));    if(ab*ab+bc*bc-ca*ca<0||bc*bc+ca*ca-ab*ab<0||ca*ca+ab*ab-bc*bc<0)cout<<"Out of the triangle."<<endl;    else cout<<"In the triangle."<<endl;    return 0;}Point::Point():x(0.0),y(0.0){} 

热点排行