- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
判断该三点是否构成直角三角形。.ppt
【例5.7】任意给定平面上三点坐标,判断该三点是否构成直角三角形。 【例5.7】任意给定平面上三点坐标,判断该三点是否构成直角三角形。 解:判断步骤应该是:读入三个顶点A、B、C的坐标(x1,y1)、(x2,y2)、(x3,y3);检验三点是否构成三角形;若构成三角形,则检验其是否直角三角形。 开始 判断是否直角三角形 结束 是三角形? 读入三点A、B、C坐标 印“不是三角形” 检验“是否三角形”可以检验“三点是否在一条直线” ,求精成:求两点A、B确定的直线方程AB ;判断点C是否在AB上? 求A、B两点直线方程AB: y=a * x + b 三点共线 isOneLine 结束 C在AB上 return false return true 检验“是否三角形”可以检验“三点是否在一条直线” ,求精成:求两点A、B确定的直线方程AB ;判断点C是否在AB上? 求A、B两点直线方程AB: y=a * x + b 三点共线 isOneLine 结束 C在AB上 return false return true line (x1,y1,x2,y2, *a, *b ) 求直线方程 *b = y1-(*a)*x1 结束 *a = (y2-y1)/(x2-x1) 已知两点坐标,求直线方程 判断是否直角三角形。使用勾股定理。先求出每条边的长度,再判断是否满足勾股定理 直角三角形 isRightTtriangle 结束 满足勾股定理 印“是直角三角形” 印“不是直角三角形” 求每条边的长度 判断是否直角三角形。使用勾股定理。先求出每条边的长度,再判断是否满足勾股定理 直角三角形 isRightTtriangle 结束 满足勾股定理 印“是直角三角形” 印“不是直角三角形” 求每条边的长度 已知两点坐标,求两点间距离只是一个计算公式 求两点间距离 away(x1,y1,x2,y2) 结束 return sqrt( (x2-x1)2+(y2-y1)2) /*PROGRAM test*/ #include stdio.h #define eps 1e-5 // ε精度控制 /* 函数原型部分 */ bool isOneLine(float,float,float,float,float,float); // 判断是否三点共线 void line(float,float,float,float,float*,float*); // 求由两点所确定直线方程系数y=a*x+b void isRightTtriangle (float,float,float,float,float,float); //是否直角三角形 float away(float ,float ,float ,float ); // 计算两点距离 /*主程序*/ void main(){ float ax,ay,bx,by,cx,cy; //三点坐标 printf(please input coordinat of point A、B、C:); //输入三角形三点坐标 scanf(%f%f%f%f %f%f ,ax,ay,bx,by,cx,cy); if(isOneLine (ax,ay,bx,by,cx,cy)) // 判断是否三角形 isRightTtriangle (ax,ay,bx,by,cx,cy); // 是三角形,则验证内心定理 else printf(false:the three points are on the same line!\n); // 不是三角形 }/* main */ /* 判断三点是否构成三角形*/ bool isOneLine (float x1,float y1,float x2,float y2,float x3,float y3){ float a,b; line(x1,y1,x2,y2,a,b); //第1,2点连线的斜率和截距 if(fabs(a * x3 + b-y3)eps) //带入第3点,判断是否在同一直线 return false; // 在直线上,则不是三角形 else return true; // 不在直线上,则是三角形 } /* 求由两点所确定直线方程系数y=a*x+b */ void line(float x1,float y1,float x2,float y2,float *a,float *b){ if (fabs(x1-x2)eps){ // 保障程序健壮性 printf(直线平行于Y轴:(%f , %f)、(%f
文档评论(0)