设新旧坐标系都是右手直角坐标系,点的坐标变换公式为(1) (2) 其中,(x,y)与(x',y')分别
设新旧坐标系都是右手直角坐标系,点的坐标变换公式为
(1)
(2)
其中,(x,y)与(x',y')分别表示同一点的旧坐标与新坐标,求新坐标系的原点的旧坐标,并且求坐标轴旋转的角θ.
设新旧坐标系都是右手直角坐标系,点的坐标变换公式为
(1)
(2)
其中,(x,y)与(x',y')分别表示同一点的旧坐标与新坐标,求新坐标系的原点的旧坐标,并且求坐标轴旋转的角θ.
设在空间直角坐标系0xyz的原点0(0,0,0)处放置有单位正电荷,而另有单位负电荷在椭圆[平面与旋转抛物面的交线]
上移动.问:当两电荷各自移动到什么位置时,两者引力最大?又各自移动到什么位置时,两者引力最小?
●试题一
阅读下列算法说明和算法,将应填入(n)处的字句写在答题纸的对应栏内。
【算法说明】
为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为X轴,垂直向下方向设为Y轴。
设某种显示器的像素为128×128,即在每条水平线和每条垂直线上都有128个像素。这样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中x和y都是整数,0≤x≤127,0≤y≤127。
现用一维数组MAP来存储整个一屏显示的位图信息。数组的每个元素有16位二进位,其中每位对应一个像素,"1"表示该像素"亮","0"表示该像素"暗"。数组MAP的各个元素与屏幕上的像素相对应后,其位置可排列如下:
MAP(0),MAP (1) ,…,MAP (7)
MAP (8) ,MAP (9) ,…,MAP (15)
MAP(1016),MAP(1017),…,MAP(1023)
下述算法可根据用户要求,将指定坐标(x,y)上的像素置为"亮"或"暗"。
在该算法中,变量X,Y,V,S,K都是16位无符号的二进制整数。数组BIT中的每个元素BIT(K)(K=0,...,15)的值是左起第K位为1,其余位均为0的16位无符号二进制整数,即BIT(K)的值为215-k。
【算法】
第1步根据用户指定像素的位置坐标(x,y),算出该像素的位置所属的数组元素MAP(V)。这一步的具体实现过程如下:
1.将x送变量X,将y送变量Y;
2.将Y左移 (1) 位,仍存入变量Y;
3.将X右移 (2) 位,并存入变量S;
4.计算Y+S,存入变量V,得到像素的位置所属的数组元素MAP(V)。
第2步算出指定像素在MAP(V)中所对应的位置K(K=0,…,15)。这一步的具体实现过程如下:将变量X与二进制数 (3) 进行逻辑乘运算,并存入变量K。
第3步根据用户要求将数组元素MAP(V)左起第K位设置为"1"或"0"。这一步的具体实现过程如下:
1.为把指定像素置"亮",应将MAP(V)与BIT(K)进行逻辑 (4) 运算,并存入MAP(V)。
2.为把指定像素置"暗",应先将BIT(K)各位取反,再将MAP(V)与BIT(K)进行逻辑 (5) 运算,并存入MAP(V)。
阅读以下说明及C++程序代码,将应填入(n)处的语句写在对应栏内。
【说明】
本程序的功能是根据矩形左上角和右下角顶点坐标生成一个矩形对象,然后输出该矩形4个顶点的坐标,计算并输出该矩形的面积。
【C++代码】
include<iostream>
using namespace std;
class MyPoint(//表示平面坐标系中的点的类
double x;
double y;
public:
MyPoint (double x,double y){this->x=x;this->y=y;}
double getX()const{(1);}
double getY()const{ return y;}
void show()const{ cout<<'('<<x<<','<<y<<')';}
};
class MyRectangle{ //表示矩形的类
MyPoint upleft; //矩形的左上角顶点
MyPoint down right; //矩形的右下角顶点
public:
MyRectangle(MyPoint upleft,MyPoint downright);
MyPoint getUpLeft()const{return up_left;} //返回左上角坐标
MyPoint getDownRight()const{return down_right;} //返回右下角坐标
MyPoint getUpRight()const; //返回右上角坐标
MyPoint getDownLeft()const; //返回左下角坐标
double area()const; //返回矩形的面积
};
MyRectangle:: MyRectangle((2)):
up left(p1),down_right(p2){}
MyPoint MyRectangle::getUpRight()const
{
return MyPoint(down_right.getX(),up_left.getY());
}
MyPoint MyRectangle::getDownLeft()const
{
return MyPeint((3));
}
double (4) ::area()const
{
return (getUpLeft(),getX()-getDownRight().getX())*
(getDownRight().getY()-getUpLeft().getY());
}
int main()
{
MyRectangle r(MyPoint(0,2),MyPoint(2,0));
r.getUpLeft(),show();
r.getUpRight().show();
r.getDown Right().show();
(5);
cout<<r.area()<<end1;
return 0;
}
平面坐标系内,有直线L1:y=ax和直线L2:y=bx(a>b>0),动点(1,0)沿逆时针方向绕原点做如下运动:先沿垂直方向到达直线L1,再沿水平方向到达直线L2,又沿垂直方向到达直线L1,再沿水平方向到达直线L2,…,依次交替沿垂直和水平方向到达直线L1和L2。这样的动点将______。
A.收敛于原点
B.发敞到无穷
C.沿矩形边界稳定地转圈
D.随机运动
A.收敛于原点
B.发散到无穷
C.沿矩形边界稳定地转圈
D.随机运动
试题七(共15分)
阅读以下应用说明以及用Visual Basic 编写的程序代码,将应填入(n) 处的字句写在答题纸的对应栏内。
[应用说明]
某应用程序用于监测某种设备的工作温度(20~200度),其运行窗口中,包括一个温度计(矩形形状shpMeter)以及其中指示当前设备温度的水银柱(矩形形状shpT),文字标签标记了温度刻度;另有一个图片框picCurve,用于动态描述检测到的温度曲线(用户见到的曲线与水银柱等高变化);命令按钮“开始测”(cmdStart)用于启动温度检测,命令按钮“暂停检测”(cmdStop)用于暂停检测。矩形形状 shpT(水银柱)属性visible 初始设置为不可见,属性Filltype 设置为solid(实心),FillColor设置为红色;图片框picCurve的属性AutoRedraw设置为True;再创建一个定时器TimT,属性Enabled初始设置为False(不起作用),属性Interval(定时间隔)设置为500 毫秒。为模拟设备温度的检测,程序中利用了(0,1)之间均匀分布的伪随机数获得[20,200]之间的随机温度T。为了便于在图片框picCurve 中绘制曲线,程序中对该图片框立了坐标系统,左上角为原点(0,0),水平向右方向为X 轴,垂直向下方向为Y 轴,右下角坐标为(50,180)。为了便于观察记录的温度值,图片框中从上到下创建了5 条水平线Ls(i),i=0,1,…4,并在程序中按等间隔排列进行位置设置。程序中每隔半秒算出曲线点(x,y),其中x=0,1,2,…,再用直线段连接各相邻曲线点形成温度曲线。
[Visual Basic程序代码]
Dim (1) As Integer '声明全局变量
Private Sub CmdStart_Click()
TimT.Enabled = True
ShpT.Visible = True
End Sub
Private Sub CmdStop_Click()
TimT.Enabled = False
End Sub
Private Sub Form_Load()
Dim i, H As Integer
PicCurve.Scale (0, 0)-(50, 180) '设置图片框坐标系:左上角-右下角
H = 30 'H 等于图片框高度的六分之一
For i = 0 To 4 '设置5条水平线Ls(i)的位置
Ls(i).X1 = 0 'Ls(i)起点横坐标
Ls(i).Y1 = H * (2) 'Ls(i)起点纵坐标
Ls(i).X2 = 50 'Ls(i)终点横坐标
Ls(i).Y2 = Ls(i).Y1 'Ls(i)终点纵坐标
Ls(i).BorderColor = &HC0C0C0 '设置水平线颜色
Next i
x = 0 '设置曲线坐标初值
End Sub
Private Sub timT_Timer()
Dim T, H As Integer 'T为即时温度,H 为图片框中温度点显示高度
T = Int(Rnd * 181) + 20 '模拟随机产生设备温度(20~200 度)
'按当前温度显示水银柱
H = ShpMeter.Height * (3) '算出水银柱的高度
ShpT.Top = (4) - H '设置水银柱顶部位置
ShpT.Height = H '设置水银柱的高度
'绘制温度曲线
y = (5) '算出曲线上当前点的纵坐标
If x = 51 Then '当超出图片框时
PicCurve.Cls '清除图片框内以前画的曲线
x = 0 '设置重画曲线的初值
ElseIf x > 0 Then '除左边点外
PicCurve.Line (x-1,Lasty)-(x,y),vbRed '由前1 点到当前点画红色线段
End If
x = x + 1 '准备下一点坐标
Lasty =y '保存当前坐标供下次使用
End Sub