利用一张A4纸和卡西欧图形计算器进行建筑高度的测量

作者:刘嘉     学校:北京市朝阳外国语学校

2018年04月28日

下面介绍只利用一张A4纸和卡西欧图形计算器fx-CG50进行建筑高度的测量的两种方法:

一.三角法

原理:利用三角形相似中相应边的比值相等,由已知A4纸高度及可测量出人到纸的距离和人到建筑的距离,进而计算得出建筑的高度。

操作步骤:以测量京东大厦为例

第一步:在远离京东大厦的位置,将A4纸竖直置于眼前,前后平移,使得恰好挡住大厦,如下图(考虑到想要让图像比较清晰,图中线段的比例有些失真。比如人的高度及纸张的高度位失真)其中B点为眼睛所在位置,B'点为脚所站立处地面的点,则BB'约为观测员身高,EH为A4纸(长度为297毫米),H'点为竖直放置的A4纸的正下方地面的点,A为大厦顶部,D为大厦底部.

第二步:利用A4纸的长度(整张长度及折叠后的长度),测量B'点到H'点的距离即人的眼睛到纸的距离BH和B'点到D点的距离即约为人的眼睛到大厦的距离BD.

其中:
1.测得BH大约两张A4纸长,记作600毫米.
2.由于此时观察者距离大楼较远,用A4纸测量费时费力.故选择先测量自己步长值,再用步长去度量观察者距离大楼的距离.为了尽量获得相对精确的距离,进行如下操作:

(1)确定自己的步长.为了保证数据尽量准确,选择多次试验得到数据取平均的方法。每次试验均匀的走10步,然后测量长度。实测20组数据如下:




(2)用步长测量观察者到大厦距离B'D,实测约为405步,故用209385毫米估计.



二.自由落体法


操作步骤:以测量京东大厦为例

第一步:利用卡西欧图形计算器fx-CG50的程序功能,编制时间测定插件,使计算器具备计时功能。


第二步:将A4揉成小纸团(减小空气阻力),在京东大厦尽量最高楼处,让其初速度为0自由下落。重复多次,测得平均时间。


第三步:将多次测得的时间进行数据分析,计算出平均时间。实际测得平均用时约5秒。

附程序源代码:
1.#include "fxlib.h"  
2.#include "stdlib.h"
3.#include "stdio.h"
4.#include "string.h"
5.
6.int second;/*总秒数*/
7.unsigned char str[21];/*显示字符串变量*/
8.void timeadd(){
9.        char ssec[2],smin[2],shour[2],showstr[21];/*showstr为要显示的时间字符串*/
10.        int sec,min,hour;
11.        second++;/*总秒数自加*/
12.        sec=second%60;
13.        min=(int)(second/60)%60;/*根据总秒数算出时间*/
14.        hour=(int)(second/3600)%24;
15.        if(sec<10){sprintf(ssec,"0%d",sec);}else{sprintf(ssec,"%d",sec);}
16.        if(min<10){sprintf(smin,"0%d",min);}else{sprintf(smin,"%d",min);}/*进位*/
17.        if(hour<10){sprintf(shour,"0%d",hour);}else{sprintf(shour,"%d",hour);}
18.        strcpy(showstr,shour);
19.        strcat(showstr,":");
20.        strcat(showstr,smin);
21.        strcat(showstr,":");
22.        strcat(showstr,ssec);/*连接各个字符串(时分秒)*/
23.
24.        locate(1,1);
25.        PrintRev((unsigned char*)showstr);
26.        Bdisp_PutDisp_DD();
27.}
28.
29.int AddIn_main(int isAppli, unsigned short OptionNum) {
30.        unsigned int key;
31.        int i,j,timerrun=0;/*timerrun是计时器状态*/
32.        locate(1,1);
33.        Print((unsigned char*)"Sandyzhang's timer"); 
34.        for(i=0;i<=100;i++)
35.        {
36.                Sleep(5);/*延迟5ms*/
37.sprintf(str,"loading...%d%%",i);
38.locate(1,2);
39.                Print((unsigned char*)str);
40.                Bdisp_PutDisp_DD();
41.        }
42.        Bdisp_AllClr_DDVRAM();
43.        locate(1,3);Print((unsigned char*)"F1:Start/Stop");
44.        locate(1,4);Print((unsigned char*)"F2:Clear");
45.        locate(1,1);Print((unsigned char*)"00:00:00");
46.        while(1){
47.                GetKey(&key);
48.                if(key==30009){
49.                        if(!timerrun){SetTimer(1,1000,timeadd);timerrun=1;}else{KillTimer(1);timerrun=0;}/*30009是F1键的键代码,按下后计时器计时状态取反*/
50.        }
51.                if(key==30010){
52.                        KillTimer(1);
53.                        timerrun=0;
54.                        locate(1,1);Print((unsigned char*)"00:00:00");/*清零*/
55.          second=0;/*总秒数清零*/
56.        }
57.        }
58.        return 1;
59.} 
60.
61.
62.#pragma section _BR_Size
63.unsigned long BR_Size;
64.#pragma section
65.#pragma section _TOP
66.int InitializeSystem(int isAppli, unsigned short OptionNum){
67.    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
68.}
69.#pragma section

上一篇: fx-CG50测评,留学生试用体验大公开!

下一篇: 仅用一张A4纸和计算器针对西安大雁塔高度的测量

本文产品

留学适用计算器

查看详情