15 个解决方案
#1
也就是外接圆的问题!...
明天帮你解答!
.....
明天帮你解答!
.....
#2
一定给你贴上代码!
#3
判断三角形面积与过圆心的三角形面积
大于圆心在其中,小于圆心在其外,等于在一条边上
大于圆心在其中,小于圆心在其外,等于在一条边上
#4
这么简单的题目如果都不自己动手,软件编程是不可能学好的,还是自己做吧
首先:既然你有三个顶点,你是不需要提供圆心的,外心是唯一的,有三个点可以唯一确定外心
其次:判断外心位置只要知道三边长度即可,如果c是最长边,且a*a+b*b-c*c <0则三角形肯定是钝角三角形,而外心在三角形外和三角形是钝角三角形等价
首先:既然你有三个顶点,你是不需要提供圆心的,外心是唯一的,有三个点可以唯一确定外心
其次:判断外心位置只要知道三边长度即可,如果c是最长边,且a*a+b*b-c*c <0则三角形肯定是钝角三角形,而外心在三角形外和三角形是钝角三角形等价
#5
+1 好像算法书也是这么解的!
#6
只需判断三角形是钝角、直角还是锐角。
#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)
{}
#7
额,突然发现我晕了。开方之后又乘回去了。以前做数学做多了,这道题用不到那么多信息。
#8
干吗开根号再平方?:)
#9
+1
基本数学知识。
#11
只需要外接一个圆,然后点到圆心的距离和半径比较大小不就出来了吗?
#12
叉乘!我怎么没想到,这样就不用算余弦值了。
顶。。
#13
昨天回答错了。
除了上面各位的方法,还可以
1 连接三角形顶点和圆心,如果圆心在三角形中的话,这条连线都夹在两边之间
2 如果一个点在三角形中的话,那么这个点和三角形任意两点的面积之和是等于这个三角形的
3 如果一个点在三角形内的话,那么这个点都在每条边的同一个方向
除了上面各位的方法,还可以
1 连接三角形顶点和圆心,如果圆心在三角形中的话,这条连线都夹在两边之间
2 如果一个点在三角形中的话,那么这个点和三角形任意两点的面积之和是等于这个三角形的
3 如果一个点在三角形内的话,那么这个点都在每条边的同一个方向
#14
叉乘不可能有效的,叉乘只有在3维空间才有意义,对于2维的几乎每什么用处(有叉乘定义么?)
这个问题很简单,无非就是用余弦定理判断三角形是不是钝角三角形而已。相信这是最快的方法
这个问题很简单,无非就是用余弦定理判断三角形是不是钝角三角形而已。相信这是最快的方法
#15
谢谢各位献计献策。
#1
也就是外接圆的问题!...
明天帮你解答!
.....
明天帮你解答!
.....
#2
一定给你贴上代码!
#3
判断三角形面积与过圆心的三角形面积
大于圆心在其中,小于圆心在其外,等于在一条边上
大于圆心在其中,小于圆心在其外,等于在一条边上
#4
这么简单的题目如果都不自己动手,软件编程是不可能学好的,还是自己做吧
首先:既然你有三个顶点,你是不需要提供圆心的,外心是唯一的,有三个点可以唯一确定外心
其次:判断外心位置只要知道三边长度即可,如果c是最长边,且a*a+b*b-c*c <0则三角形肯定是钝角三角形,而外心在三角形外和三角形是钝角三角形等价
首先:既然你有三个顶点,你是不需要提供圆心的,外心是唯一的,有三个点可以唯一确定外心
其次:判断外心位置只要知道三边长度即可,如果c是最长边,且a*a+b*b-c*c <0则三角形肯定是钝角三角形,而外心在三角形外和三角形是钝角三角形等价
#5
+1 好像算法书也是这么解的!
#6
只需判断三角形是钝角、直角还是锐角。
#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)
{}
#7
额,突然发现我晕了。开方之后又乘回去了。以前做数学做多了,这道题用不到那么多信息。
#8
干吗开根号再平方?:)
#9
+1
基本数学知识。
#10
#11
只需要外接一个圆,然后点到圆心的距离和半径比较大小不就出来了吗?
#12
叉乘!我怎么没想到,这样就不用算余弦值了。
顶。。
#13
昨天回答错了。
除了上面各位的方法,还可以
1 连接三角形顶点和圆心,如果圆心在三角形中的话,这条连线都夹在两边之间
2 如果一个点在三角形中的话,那么这个点和三角形任意两点的面积之和是等于这个三角形的
3 如果一个点在三角形内的话,那么这个点都在每条边的同一个方向
除了上面各位的方法,还可以
1 连接三角形顶点和圆心,如果圆心在三角形中的话,这条连线都夹在两边之间
2 如果一个点在三角形中的话,那么这个点和三角形任意两点的面积之和是等于这个三角形的
3 如果一个点在三角形内的话,那么这个点都在每条边的同一个方向
#14
叉乘不可能有效的,叉乘只有在3维空间才有意义,对于2维的几乎每什么用处(有叉乘定义么?)
这个问题很简单,无非就是用余弦定理判断三角形是不是钝角三角形而已。相信这是最快的方法
这个问题很简单,无非就是用余弦定理判断三角形是不是钝角三角形而已。相信这是最快的方法
#15
谢谢各位献计献策。