发表日期:2016-10-31 17:55:22文章编辑:浏览次数: 标签:
在机器人制作过程中,要用到很多的数学、物理等课本上所学到的基本原理和公式定理。我们通过这些知识的应用,可以提高机器人的搭建水平和搭建速度,也可以提高对所学知识的应用水平。从本文起,我们将陆续介绍机器人制作和程序编辑过程中所用到的数学、物理知识及其应用。
如图所示的直角三角形中
如 a=3,b=4,则c=5;(勾三股四弦五)
a=6,b=8,则c=10;
a=5,b=12,则c=13;
a=8,b=15,则c=17等。
于是我们用亮宁机器人套装中的单排孔板搭建一个稳定的直角三角形时可以搭建成下面的形式。
上面几组勾股弦的长度,是数学公式精准计算的结果。但在实践中,我们也要灵活运用知识,例如 32+52与62 相差不多。这个直角三角形的斜边是一条直角边边长的两倍,构成一个30°与60°的特殊直角三角形。
还有42+72 与82 相差不多。于是3,5,6以及4,7,8等也构成一组组的勾股弦,它们也会构成近似的直角三角形形式,不会影响应用。又因螺丝与螺孔之间的间隙,我们还可以适当调整,使结构更接近直角三角形。
我们如何来找到这些近似的直角三角形的三边长度关系呢?看下面的程序段。
void init()
{
winIO;
for(int i=4;i<=20;i++)
{
for(int j=3;j<i,j++) // 12、 22太小,容易产生较大偏差。
{
float f=sqrt(i*i+j*j); //直角边的平方和开平方。
int k=f+0.5; //将浮点数取整后赋给整形变量k,加0.5是为了四舍五入。
if(abs(f-k)<0.1) //取整前后差的绝对值不超过0.1,控制误差不太大。
{
winprint(i);winprint(‘ ’);
winprint(j);winprint(‘ ’);
winprintln(k);
}
}
}
}
…
该程序会显示出多组近似的勾股弦的长度,用它们可以构成近似的直角三角形。
三角形的边角关系
在机器人制作时,由于梁宁机器人套装中各孔之间的距离都是以1厘米长度为单位的,所以无论如何搭建的三角形或其他多边形,各边长不用尺子度量就一目了然。但各边之间的夹角却不怎么好度量。对于直角三角形的两个锐角,用正切函数表示为
tan(A)=a/b 写成程序语句: float A=atan(a/b)
于是我们用arduino中的反正切函数atan()就可以简单地输出角的大小。不过,值得一提的是,这里函数返回值是弧度,而非角度。
例如等腰直角三角形两锐角的正切值为1,所以有
float A=atan(1);
winprint(A)的结果是0.792
我们要用C语言输出角度的语句为:
pi=3.1415926;
float A=atan(a/b)*180/pi;
我们用3、5、6长度构成的近似直角三角形的斜边是一直角边的两倍,所以有一锐角为30°,则
float A=atan(5/6)*180/pi。
如果是钝角或锐角三角形,我们就要用余弦定律来求已知三边长的任意三角形各个角的大小。
A=atan((b*b+c*c-a*a)/(2*b*c)
按照上面的对应关系,读者自行写出求角B和角C的表达式,试试3,5,6这组边所构成三角形的三个角的大小,看能否找到一个直角。