三维计算几何

三维计算几何
三维计算几何

1.计算几何

1.1 注意

1. 注意舍入方式(0.5的舍入方向);防止输出-0.

2. 几何题注意多测试不对称数据.

3. 整数几何注意xmult和dmult是否会出界;

符点几何注意eps的使用.

4. 避免使用斜率;注意除数是否会为0.

5. 公式一定要化简后再代入.

6. 判断同一个2*PI域内两角度差应该是

abs(a1-a2)pi+pi-beta;

相等应该是

abs(a1-a2)pi+pi-eps;

7. 需要的话尽量使用atan2,注意:atan2(0,0)=0,

atan2(1,0)=pi/2,atan2(-1,0)=-pi/2,atan2(0,1)=0,atan2(0,-1)=pi.

8. cross product = |u|*|v|*sin(a)

dot product = |u|*|v|*cos(a)

9. (P1-P0)x(P2-P0)结果的意义:

正: 顺时针(0,pi)内

负: 逆时针(0,pi)内

0 : ,共线,夹角为0或pi

10. 误差限缺省使用1e-8!

1.2几何公式

三角形:

1. 半周长 P=(a+b+c)/2

2. 面积 S=aHa/2=absin(C)/2=sqrt(P(P-a)(P-b)(P-c))

3. 中线 Ma=sqrt(2(b^2+c^2)-a^2)/2=sqrt(b^2+c^2+2bccos(A))/2

4. 角平分线 Ta=sqrt(bc((b+c)^2-a^2))/(b+c)=2bccos(A/2)/(b+c)

5. 高线 Ha=bsin(C)=csin(B)=sqrt(b^2-((a^2+b^2-c^2)/(2a))^2)

6. 内切圆半径 r=S/P=asin(B/2)sin(C/2)/sin((B+C)/2)

=4Rsin(A/2)sin(B/2)sin(C/2)=sqrt((P-a)(P-b)(P-c)/P) =Ptan(A/2)tan(B/2)tan(C/2)

7. 外接圆半径 R=abc/(4S)=a/(2sin(A))=b/(2sin(B))=c/(2sin(C))

四边形:

D1,D2为对角线,M对角线中点连线,A为对角线夹角

1. a^2+b^2+c^2+d^2=D1^2+D2^2+4M^2

2. S=D1D2sin(A)/2

(以下对圆的内接四边形)

3. ac+bd=D1D2

4. S=sqrt((P-a)(P-b)(P-c)(P-d)),P为半周长

正n边形:

R为外接圆半径,r为内切圆半径

1. 中心角 A=2PI/n

2. 内角 C=(n-2)PI/n

3. 边长 a=2sqrt(R^2-r^2)=2Rsin(A/2)=2rtan(A/2)

4. 面积 S=nar/2=nr^2tan(A/2)=nR^2sin(A)/2=na^2/(4tan(A/2))

圆:

1. 弧长 l=rA

2. 弦长 a=2sqrt(2hr-h^2)=2rsin(A/2)

3. 弓形高 h=r-sqrt(r^2-a^2/4)=r(1-cos(A/2))=atan(A/4)/2

4. 扇形面积 S1=rl/2=r^2A/2

5. 弓形面积 S2=(rl-a(r-h))/2=r^2(A-sin(A))/2

棱柱:

1. 体积 V=Ah,A为底面积,h为高

2. 侧面积 S=lp,l为棱长,p为直截面周长

3. 全面积 T=S+2A

棱锥:

1. 体积 V=Ah/3,A为底面积,h为高

(以下对正棱锥)

2. 侧面积 S=lp/2,l为斜高,p为底面周长

3. 全面积 T=S+A

棱台:

1. 体积 V=(A1+A2+sqrt(A1A2))h/3,A1.A2为上下底面积,h为高(以下为正棱台)

2. 侧面积 S=(p1+p2)l/2,p1.p2为上下底面周长,l为斜高

3. 全面积 T=S+A1+A2

圆柱:

1. 侧面积 S=2PIrh

2. 全面积 T=2PIr(h+r)

3. 体积 V=PIr^2h

圆锥:

1. 母线 l=sqrt(h^2+r^2)

2. 侧面积 S=PIrl

3. 全面积 T=PIr(l+r)

4. 体积 V=PIr^2h/3

圆台:

1. 母线 l=sqrt(h^2+(r1-r2)^2)

2. 侧面积 S=PI(r1+r2)l

3. 全面积 T=PIr1(l+r1)+PIr2(l+r2)

4. 体积 V=PI(r1^2+r2^2+r1r2)h/3

球:

1. 全面积 T=4PIr^2

2. 体积 V=4PIr^3/3

球台:

1. 侧面积 S=2PIrh

2. 全面积 T=PI(2rh+r1^2+r2^2)

3. 体积 V=PIh(3(r1^2+r2^2)+h^2)/6

球扇形:

1. 全面积 T=PIr(2h+r0),h 为球冠高,r0为球冠底面半径

2. 体积 V=2PIr^2h/3

Euler 的任意四面体体积公式(已知边长求体积)

已知4点坐标求体积(其中四个点的坐标分别为(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),

(x4,y4,z4))

1

1111234(1/6)*

.12341234

x x x x V y y y y z z z z =

1.3 多边形

#include #include #define MAXN 1000 #define offset 10000 #define eps 1e-8

#define zero(x) (((x)>0?(x):-(x))

#define _sign(x) ((x)>eps?1:((x)<-eps?2:0)) struct point{double x,y;}; struct line{point a,b;};

222

222

2

222222

22222

222

2

2

236.2

2

2

2

p q n p r m p p q n

q r l V q p r m q r l r +-+-+-+-=

+-+-

double xmult(point p1,point p2,point p0){

return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);

}

//判定凸多边形,顶点按顺时针或逆时针给出,允许相邻边共线

int is_convex(int n,point* p){

int i,s[3]={1,1,1};

for (i=0;i

s[_sign(xmult(p[(i+1)%n],p[(i+2)%n],p[i]))]=0;

return s[1]|s[2];

}

//判定凸多边形,顶点按顺时针或逆时针给出,不允许相邻边共线

int is_convex_v2(int n,point* p){

int i,s[3]={1,1,1};

for (i=0;i

s[_sign(xmult(p[(i+1)%n],p[(i+2)%n],p[i]))]=0;

return s[0]&&s[1]|s[2];

}

//判点在凸多边形内或多边形边上,顶点按顺时针或逆时针给出

int inside_convex(point q,int n,point* p){

int i,s[3]={1,1,1};

for (i=0;i

s[_sign(xmult(p[(i+1)%n],q,p[i]))]=0;

return s[1]|s[2];

}

//判点在凸多边形内,顶点按顺时针或逆时针给出,在多边形边上返回0

int inside_convex_v2(point q,int n,point* p){

int i,s[3]={1,1,1};

for (i=0;i

s[_sign(xmult(p[(i+1)%n],q,p[i]))]=0;

return s[0]&&s[1]|s[2];

}

//判点在任意多边形内,顶点按顺时针或逆时针给出

//on_edge表示点在多边形边上时的返回值,offset为多边形坐标上限

int inside_polygon(point q,int n,point* p,int on_edge=1){ point q2;

int i=0,count;

while (i

for (count=i=0,q2.x=rand()+offset,q2.y=rand()+offset;i

(zero(xmult(q,p[i],p[(i+1)%n]))&&(p[i].x-q.x)*(p[(i+1)%n].x-q.x)

return on_edge;

else if (zero(xmult(q,q2,p[i])))

break;

else if (xmult(q,p[i],q2)*xmult(q,p[(i+1)%n],q2)<-eps&&xmult(p[i],q,p[(i+1)%n])*xmult(p [i],q2,p[(i+1)%n])<-eps)

count++;

return count&1;

}

inline int opposite_side(point p1,point p2,point l1,point l2){

return xmult(l1,p1,l2)*xmult(l1,p2,l2)<-eps;

}

inline int dot_online_in(point p,point l1,point l2){

return

zero(xmult(p,l1,l2))&&(l1.x-p.x)*(l2.x-p.x)

}

//判线段在任意多边形内,顶点按顺时针或逆时针给出,与边界相交返回1

int inside_polygon(point l1,point l2,int n,point* p){

point t[MAXN],tt;

int i,j,k=0;

if (!inside_polygon(l1,n,p)||!inside_polygon(l2,n,p))

return 0;

for (i=0;i

if

(opposite_side(l1,l2,p[i],p[(i+1)%n])&&opposite_side(p[i],p[(i+1)%n],l1,l2)) return 0;

else if (dot_online_in(l1,p[i],p[(i+1)%n]))

t[k++]=l1;

else if (dot_online_in(l2,p[i],p[(i+1)%n]))

t[k++]=l2;

else if (dot_online_in(p[i],l1,l2))

t[k++]=p[i];

for (i=0;i

for (j=i+1;j

tt.x=(t[i].x+t[j].x)/2;

tt.y=(t[i].y+t[j].y)/2;

if (!inside_polygon(tt,n,p))

return 0;

}

return 1;

}

point intersection(line u,line v){

point ret=u.a;

double t=((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x)) /((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));

ret.x+=(u.b.x-u.a.x)*t;

ret.y+=(u.b.y-u.a.y)*t;

return ret;

}

point barycenter(point a,point b,point c){

line u,v;

u.a.x=(a.x+b.x)/2;

u.a.y=(a.y+b.y)/2;

u.b=c;

v.a.x=(a.x+c.x)/2;

v.a.y=(a.y+c.y)/2;

v.b=b;

return intersection(u,v);

}

//多边形重心

point barycenter(int n,point* p){

point ret,t;

double t1=0,t2;

int i;

ret.x=ret.y=0;

for (i=1;i

if (fabs(t2=xmult(p[0],p[i],p[i+1]))>eps){

t=barycenter(p[0],p[i],p[i+1]);

ret.x+=t.x*t2;

ret.y+=t.y*t2;

t1+=t2;

}

if (fabs(t1)>eps)

ret.x/=t1,ret.y/=t1;

return ret;

}

1.4多边形切割

//多边形切割

//可用于半平面交

#define MAXN 100

#define zero(x) (((x)>0?(x):-(x))

struct point{double x,y;};

double xmult(point p1,point p2,point p0){

return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);

}

int same_side(point p1,point p2,point l1,point l2){

return xmult(l1,p1,l2)*xmult(l1,p2,l2)>eps;

}

point intersection(point u1,point u2,point v1,point v2){

point ret=u1;

double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))

/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));

ret.x+=(u2.x-u1.x)*t;

ret.y+=(u2.y-u1.y)*t;

return ret;

}

//将多边形沿l1,l2确定的直线切割在side侧切割,保证l1,l2,side不共线

void polygon_cut(int& n,point* p,point l1,point l2,point side){ point pp[MAXN];

int m=0,i;

for (i=0;i

if (same_side(p[i],side,l1,l2))

pp[m++]=p[i];

if

(!same_side(p[i],p[(i+1)%n],l1,l2)&&!(zero(xmult(p[i],l1,l2))&&zero(xmult(p[(i+ 1)%n],l1,l2))))

pp[m++]=intersection(p[i],p[(i+1)%n],l1,l2);

}

for (n=i=0;i

if (!i||!zero(pp[i].x-pp[i-1].x)||!zero(pp[i].y-pp[i-1].y))

p[n++]=pp[i];

if (zero(p[n-1].x-p[0].x)&&zero(p[n-1].y-p[0].y))

n--;

if (n<3)

n=0;

}

1.5 浮点函数

//浮点几何函数库

#include

#define zero(x) (((x)>0?(x):-(x))

struct point{double x,y;};

struct line{point a,b;};

//计算cross product (P1-P0)x(P2-P0)

double xmult(point p1,point p2,point p0){

return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);

}

double xmult(double x1,double y1,double x2,double y2,double x0,double y0){ return (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);

}

//计算dot product (P1-P0).(P2-P0)

double dmult(point p1,point p2,point p0){

return (p1.x-p0.x)*(p2.x-p0.x)+(p1.y-p0.y)*(p2.y-p0.y);

}

double dmult(double x1,double y1,double x2,double y2,double x0,double y0){ return (x1-x0)*(x2-x0)+(y1-y0)*(y2-y0);

}

//两点距离

double distance(point p1,point p2){

return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));

}

double distance(double x1,double y1,double x2,double y2){

return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

}

//判三点共线

int dots_inline(point p1,point p2,point p3){

return zero(xmult(p1,p2,p3));

}

int dots_inline(double x1,double y1,double x2,double y2,double x3,double y3){ return zero(xmult(x1,y1,x2,y2,x3,y3));

}

//判点是否在线段上,包括端点

int dot_online_in(point p,line l){

return

zero(xmult(p,l.a,l.b))&&(l.a.x-p.x)*(l.b.x-p.x)

}

int dot_online_in(point p,point l1,point l2){

return

zero(xmult(p,l1,l2))&&(l1.x-p.x)*(l2.x-p.x)

}

int dot_online_in(double x,double y,double x1,double y1,double x2,double y2){ return zero(xmult(x,y,x1,y1,x2,y2))&&(x1-x)*(x2-x)

//判点是否在线段上,不包括端点

int dot_online_ex(point p,line l){

return

dot_online_in(p,l)&&(!zero(p.x-l.a.x)||!zero(p.y-l.a.y))&&(!zero(p.x-l.b.x)||!z ero(p.y-l.b.y));

}

int dot_online_ex(point p,point l1,point l2){

return

dot_online_in(p,l1,l2)&&(!zero(p.x-l1.x)||!zero(p.y-l1.y))&&(!zero(p.x-l2.x)||! zero(p.y-l2.y));

}

int dot_online_ex(double x,double y,double x1,double y1,double x2,double y2){ return

dot_online_in(x,y,x1,y1,x2,y2)&&(!zero(x-x1)||!zero(y-y1))&&(!zero(x-x2)||!zero (y-y2));

}

//判两点在线段同侧,点在线段上返回0

int same_side(point p1,point p2,line l){

return xmult(l.a,p1,l.b)*xmult(l.a,p2,l.b)>eps;

}

int same_side(point p1,point p2,point l1,point l2){

return xmult(l1,p1,l2)*xmult(l1,p2,l2)>eps;

}

//判两点在线段异侧,点在线段上返回0

int opposite_side(point p1,point p2,line l){

return xmult(l.a,p1,l.b)*xmult(l.a,p2,l.b)<-eps;

}

int opposite_side(point p1,point p2,point l1,point l2){

return xmult(l1,p1,l2)*xmult(l1,p2,l2)<-eps;

}

//判两直线平行

int parallel(line u,line v){

return zero((u.a.x-u.b.x)*(v.a.y-v.b.y)-(v.a.x-v.b.x)*(u.a.y-u.b.y));

}

int parallel(point u1,point u2,point v1,point v2){

return zero((u1.x-u2.x)*(v1.y-v2.y)-(v1.x-v2.x)*(u1.y-u2.y));

}

//判两直线垂直

int perpendicular(line u,line v){

return zero((u.a.x-u.b.x)*(v.a.x-v.b.x)+(u.a.y-u.b.y)*(v.a.y-v.b.y));

}

int perpendicular(point u1,point u2,point v1,point v2){

return zero((u1.x-u2.x)*(v1.x-v2.x)+(u1.y-u2.y)*(v1.y-v2.y));

}

//判两线段相交,包括端点和部分重合

int intersect_in(line u,line v){

if (!dots_inline(u.a,u.b,v.a)||!dots_inline(u.a,u.b,v.b))

return !same_side(u.a,u.b,v)&&!same_side(v.a,v.b,u);

return

dot_online_in(u.a,v)||dot_online_in(u.b,v)||dot_online_in(v.a,u)||dot_online_in (v.b,u);

}

int intersect_in(point u1,point u2,point v1,point v2){

if (!dots_inline(u1,u2,v1)||!dots_inline(u1,u2,v2))

return !same_side(u1,u2,v1,v2)&&!same_side(v1,v2,u1,u2);

return

dot_online_in(u1,v1,v2)||dot_online_in(u2,v1,v2)||dot_online_in(v1,u1,u2)||dot_ online_in(v2,u1,u2);

}

//判两线段相交,不包括端点和部分重合

int intersect_ex(line u,line v){

return opposite_side(u.a,u.b,v)&&opposite_side(v.a,v.b,u);

}

int intersect_ex(point u1,point u2,point v1,point v2){

return opposite_side(u1,u2,v1,v2)&&opposite_side(v1,v2,u1,u2);

}

//计算两直线交点,注意事先判断直线是否平行!

//线段交点请另外判线段相交(同时还是要判断是否平行!)

point intersection(line u,line v){

point ret=u.a;

double t=((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x))

/((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));

ret.x+=(u.b.x-u.a.x)*t;

ret.y+=(u.b.y-u.a.y)*t;

return ret;

}

point intersection(point u1,point u2,point v1,point v2){

point ret=u1;

double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))

/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));

ret.x+=(u2.x-u1.x)*t;

ret.y+=(u2.y-u1.y)*t;

return ret;

}

//点到直线上的最近点

point ptoline(point p,line l){

point t=p;

t.x+=l.a.y-l.b.y,t.y+=l.b.x-l.a.x;

return intersection(p,t,l.a,l.b);

}

point ptoline(point p,point l1,point l2){

point t=p;

t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;

return intersection(p,t,l1,l2);

}

//点到直线距离

double disptoline(point p,line l){

return fabs(xmult(p,l.a,l.b))/distance(l.a,l.b);

}

double disptoline(point p,point l1,point l2){

return fabs(xmult(p,l1,l2))/distance(l1,l2);

}

double disptoline(double x,double y,double x1,double y1,double x2,double y2){ return fabs(xmult(x,y,x1,y1,x2,y2))/distance(x1,y1,x2,y2);

}

//点到线段上的最近点

point ptoseg(point p,line l){

point t=p;

t.x+=l.a.y-l.b.y,t.y+=l.b.x-l.a.x;

if (xmult(l.a,t,p)*xmult(l.b,t,p)>eps)

return distance(p,l.a)

return intersection(p,t,l.a,l.b);

}

point ptoseg(point p,point l1,point l2){

point t=p;

t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;

if (xmult(l1,t,p)*xmult(l2,t,p)>eps)

return distance(p,l1)

return intersection(p,t,l1,l2);

}

//点到线段距离

double disptoseg(point p,line l){

point t=p;

t.x+=l.a.y-l.b.y,t.y+=l.b.x-l.a.x;

if (xmult(l.a,t,p)*xmult(l.b,t,p)>eps)

return distance(p,l.a)

return fabs(xmult(p,l.a,l.b))/distance(l.a,l.b);

}

double disptoseg(point p,point l1,point l2){

point t=p;

t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;

if (xmult(l1,t,p)*xmult(l2,t,p)>eps)

return distance(p,l1)

return fabs(xmult(p,l1,l2))/distance(l1,l2);

}

//矢量V以P为顶点逆时针旋转angle并放大scale倍

point rotate(point v,point p,double angle,double scale){

point ret=p;

v.x-=p.x,v.y-=p.y;

p.x=scale*cos(angle);

p.y=scale*sin(angle);

ret.x+=v.x*p.x-v.y*p.y;

ret.y+=v.x*p.y+v.y*p.x;

return ret;

}

//p点关于直线L的对称点

ponit symmetricalPointofLine(point p, line L)

{

point p2;

double d;

d = L.a * L.a + L.b * L.b;

p2.x = (L.b * L.b * p.x - L.a * L.a * p.x -

2 * L.a * L.b * p.y - 2 * L.a * L.c) / d;

p2.y = (L.a * L.a * p.y - L.b * L.b * p.y -

2 * L.a * L.b * p.x - 2 * L.b * L.c) / d;

return p2;

}

//求两点的平分线

line bisector(point& a, point& b) {

line ab, ans; ab.set(a, b);

double midx = (a.x + b.x)/2.0, midy = (a.y + b.y)/2.0;

ans.a = -ab.b, ans.b = -ab.a, ans.c = -ab.b * midx + ab.a * midy;

return ans;

}

// 已知入射线、镜面,求反射线。

// a1,b1,c1为镜面直线方程(a1 x + b1 y + c1 = 0 ,下同)系数;

a2,b2,c2为入射光直线方程系数;

a,b,c为反射光直线方程系数.

// 光是有方向的,使用时注意:入射光向量:<-b2,a2>;反射光向量:. // 不要忘记结果中可能会有"negative zeros"

void reflect(double a1,double b1,double c1,

double a2,double b2,double c2,

double &a,double &b,double &c)

{

double n,m;

double tpb,tpa;

tpb=b1*b2+a1*a2;

tpa=a2*b1-a1*b2;

m=(tpb*b1+tpa*a1)/(b1*b1+a1*a1);

n=(tpa*b1-tpb*a1)/(b1*b1+a1*a1);

if(fabs(a1*b2-a2*b1)<1e-20)

{

a=a2;b=b2;c=c2;

return;

}

double xx,yy; //(xx,yy)是入射线与镜面的交点。

xx=(b1*c2-b2*c1)/(a1*b2-a2*b1);

yy=(a2*c1-a1*c2)/(a1*b2-a2*b1);

a=n;

b=-m;

c=m*yy-xx*n;

}

1.6 面积

#include

struct point{double x,y;};

//计算cross product (P1-P0)x(P2-P0)

double xmult(point p1,point p2,point p0){

return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);

}

double xmult(double x1,double y1,double x2,double y2,double x0,double y0){ return (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);

}

//计算三角形面积,输入三顶点

double area_triangle(point p1,point p2,point p3){

return fabs(xmult(p1,p2,p3))/2;

}

double area_triangle(double x1,double y1,double x2,double y2,double x3,double y3){ return fabs(xmult(x1,y1,x2,y2,x3,y3))/2;

}

//计算三角形面积,输入三边长

double area_triangle(double a,double b,double c){

double s=(a+b+c)/2;

return sqrt(s*(s-a)*(s-b)*(s-c));

}

//计算多边形面积,顶点按顺时针或逆时针给出

double area_polygon(int n,point* p){

double s1=0,s2=0;

int i;

for (i=0;i

s1+=p[(i+1)%n].y*p[i].x,s2+=p[(i+1)%n].y*p[(i+2)%n].x;

return fabs(s1-s2)/2;

}

1.7球面

#include

const double pi=acos(-1);

//计算圆心角lat表示纬度,-90<=w<=90,lng表示经度

//返回两点所在大圆劣弧对应圆心角,0<=angle<=pi

double angle(double lng1,double lat1,double lng2,double lat2){

double dlng=fabs(lng1-lng2)*pi/180;

while (dlng>=pi+pi)

dlng-=pi+pi;

if (dlng>pi)

dlng=pi+pi-dlng;

lat1*=pi/180,lat2*=pi/180;

return acos(cos(lat1)*cos(lat2)*cos(dlng)+sin(lat1)*sin(lat2));

}

//计算距离,r为球半径

double line_dist(double r,double lng1,double lat1,double lng2,double lat2){ double dlng=fabs(lng1-lng2)*pi/180;

while (dlng>=pi+pi)

dlng-=pi+pi;

if (dlng>pi)

dlng=pi+pi-dlng;

lat1*=pi/180,lat2*=pi/180;

return r*sqrt(2-2*(cos(lat1)*cos(lat2)*cos(dlng)+sin(lat1)*sin(lat2)));

}

//计算球面距离,r为球半径

inline double sphere_dist(double r,double lng1,double lat1,double lng2,double lat2){

return r*angle(lng1,lat1,lng2,lat2);

}

//球面反射

//SGU110

// http://acm.sgu.ru/problem.php?contest=0&problem=110

#include

#include

const int size = 555;

const double eps = 1e-9;

struct point {double x, y, z;} centre = {0, 0, 0};

struct circle {point o; double r;} cir[size];

struct ray {point s, dir;} l;

int n;

int dcmp (double x){return x < -eps ? -1 : x > eps;}

double sqr (double x){return x*x;}

double dot (point a, point b){return a.x * b.x + a.y * b.y + a.z * b.z;}

double dis2 (point a, point b){return sqr(a.x-b.x) + sqr(a.y-b.y) + sqr(a.z-b.z);} double disToLine2 (point a, ray l){ /**** 点到直线L的距离的平方 **/ point tmp;

tmp.x = l.dir.y * (a.z - l.s.z) - l.dir.z * (a.y - l.s.y);

tmp.y = -l.dir.x * (a.z - l.s.z) + l.dir.z * (a.x - l.s.x);

tmp.z = l.dir.x * (a.y - l.s.y) - l.dir.y * (a.x - l.s.x);

return dis2 (tmp, centre) / dis2 (l.dir, centre);

}

/** 用解方程(点到圆心的距离为r)法求交点 (下面有向量法求交点, 两者取其一, 都OK)*/

/* 是向量分量表示发的系数, 必须在射线上,故K必须为正, t是交点***/

/*

bool find (circle p, ray l, double &k, point &t)

{

double x = l.s.x - p.o.x, y = l.s.y - p.o.y, z = l.s.z - p.o.z;

double a = sqr(l.dir.x) + sqr(l.dir.y) + sqr(l.dir.z);

double b = 2 * (x*l.dir.x + y*l.dir.y + z*l.dir.z);

double c = x*x + y*y + z*z - p.r*p.r;

double det = b*b - 4*a*c;

// printf ("a = %lf, b = %lf, c = %lf", a, b, c);

// printf ("det = %lf\n", det);

if (dcmp(det) == -1) return false;

k = (-b - sqrt(det)) / a / 2;

if (dcmp(k) != 1) return false;

t.x = l.s.x + k * l.dir.x;

t.y = l.s.y + k * l.dir.y;

t.z = l.s.z + k * l.dir.z;

return true;

}

*/

/**** 用向量法求交点 ***/

bool find (circle p, ray l, double &k, point &t)

{

double h2 = disToLine2 (p.o, l);

// printf ("h2 = %lf\n", h2);

if (dcmp(p.r*p.r - h2) < 0) return false;

point tmp;

tmp.x = p.o.x - l.s.x;

tmp.y = p.o.y - l.s.y;

tmp.z = p.o.z - l.s.z;

if (dcmp(dot(tmp, l.dir)) <= 0) return false;

k = sqrt(dis2(p.o, l.s) - h2) - sqrt(p.r*p.r - h2);

double k1 = k / sqrt(dis2(l.dir, centre));

t.x = l.s.x + k1 * l.dir.x;

t.y = l.s.y + k1 * l.dir.y;

t.z = l.s.z + k1 * l.dir.z;

return true;

}

/*计算新射线的起点和方向 */

void newRay (ray &l, ray l1, point inter)

double k = - 2 * dot(l.dir, l1.dir);

l.dir.x += l1.dir.x * k;

l.dir.y += l1.dir.y * k;

l.dir.z += l1.dir.z * k;

l.s = inter;

}

/* 返回的是最先相交的球的编号,均不相交,返回-1 */

int update ()

{

int sign = -1, i;

double k = 1e100, tmp;

point inter, t;

for (i = 1; i <= n; i++){ //找到最先相交的球

if (!find (cir[i], l, tmp, t)) continue;

if (dcmp (tmp - k) < 0) k = tmp, inter = t, sign = i;

}

//ray 变向

if (sign == -1) return sign;

ray l1;

l1.s = cir[sign].o;

l1.dir.x = (inter.x - l1.s.x) / cir[sign].r;

l1.dir.y = (inter.y - l1.s.y) / cir[sign].r;

l1.dir.z = (inter.z - l1.s.z) / cir[sign].r;

newRay (l, l1, inter);

return sign;

}

int main ()

{

// freopen ("in", "r", stdin);

int i;

scanf ("%d", &n);

for (i = 1; i <= n; i++) //输入空间的球位置

scanf ("%lf%lf%lf%lf", &cir[i].o.x, &cir[i].o.y, &cir[i].o.z, &cir[i].r);

scanf ("%lf%lf%lf%lf%lf%lf", &l.s.x, &l.s.y, &l.s.z, &l.dir.x, &l.dir.y, &l.dir.z);

for (i = 0; i <= 10; i++){ //最多输出十次相交的球的编号

int sign = update ();

if (sign == -1) break;

if (i == 0) printf ("%d", sign);

else if (i < 10) printf (" %d", sign);

else printf (" etc.");

}

puts ("");

1.8三角形

#include

struct point{double x,y;};

struct line{point a,b;};

double distance(point p1,point p2){

return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));

}

point intersection(line u,line v){

point ret=u.a;

double t=((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x)) /((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));

ret.x+=(u.b.x-u.a.x)*t;

ret.y+=(u.b.y-u.a.y)*t;

return ret;

}

//外心

point circumcenter(point a,point b,point c){

line u,v;

u.a.x=(a.x+b.x)/2;

u.a.y=(a.y+b.y)/2;

u.b.x=u.a.x-a.y+b.y;

u.b.y=u.a.y+a.x-b.x;

v.a.x=(a.x+c.x)/2;

v.a.y=(a.y+c.y)/2;

v.b.x=v.a.x-a.y+c.y;

v.b.y=v.a.y+a.x-c.x;

return intersection(u,v);

}

//内心

point incenter(point a,point b,point c){

line u,v;

double m,n;

u.a=a;

m=atan2(b.y-a.y,b.x-a.x);

n=atan2(c.y-a.y,c.x-a.x);

u.b.x=u.a.x+cos((m+n)/2);

u.b.y=u.a.y+sin((m+n)/2);

v.a=b;

m=atan2(a.y-b.y,a.x-b.x);

n=atan2(c.y-b.y,c.x-b.x);

v.b.x=v.a.x+cos((m+n)/2);

v.b.y=v.a.y+sin((m+n)/2);

return intersection(u,v);

}

//垂心

point perpencenter(point a,point b,point c){

line u,v;

u.a=c;

u.b.x=u.a.x-a.y+b.y;

u.b.y=u.a.y+a.x-b.x;

v.a=b;

v.b.x=v.a.x-a.y+c.y;

v.b.y=v.a.y+a.x-c.x;

return intersection(u,v);

}

//重心

//到三角形三顶点距离的平方和最小的点

//三角形内到三边距离之积最大的点

point barycenter(point a,point b,point c){

line u,v;

u.a.x=(a.x+b.x)/2;

u.a.y=(a.y+b.y)/2;

u.b=c;

v.a.x=(a.x+c.x)/2;

v.a.y=(a.y+c.y)/2;

v.b=b;

return intersection(u,v);

}

//费马点

//到三角形三顶点距离之和最小的点

point fermentpoint(point a,point b,point c){

point u,v;

double step=fabs(a.x)+fabs(a.y)+fabs(b.x)+fabs(b.y)+fabs(c.x)+fabs(c.y);

int i,j,k;

u.x=(a.x+b.x+c.x)/3;

u.y=(a.y+b.y+c.y)/3;

while (step>1e-10)

for (k=0;k<10;step/=2,k++)

for (i=-1;i<=1;i++)

for (j=-1;j<=1;j++){

v.x=u.x+step*i;

v.y=u.y+step*j;

if

(distance(u,a)+distance(u,b)+distance(u,c)>distance(v,a)+distance(v,b)+distance (v,c))

u=v;

}

return u;

}

//求曲率半径三角形内最大可围成面积

#include

#include

using namespace std;

const double pi=3.14159265358979;

int main()

{

double a,b,c,d,p,s,r,ans,R,x,l; int T=0;

while(cin>>a>>b>>c>>d&&a+b+c+d)

{

T++;

l=a+b+c;

p=l/2;

s=sqrt(p*(p-a)*(p-b)*(p-c));

R= s /p;

if (d >= l) ans = s;

else if(2*pi*R>=d) ans=d*d/(4*pi);

else

{

r = (l-d)/((l/R)-(2*pi));

x = r*r*s/(R*R);

ans = s - x + pi * r * r;

}

printf("Case %d: %.2lf\n",T,ans);

}

return 0;

}

1.9三维几何

//三维几何函数库

#include

#define eps 1e-8

#define zero(x) (((x)>0?(x):-(x))

struct point3{double x,y,z;};

立体几何练习题及答案

… 数学立体几何练习题 一、选择题:本大题共8小题,每小题5分,共40分.在每小题给出的四个选项中,只有一个是符合题目要求的. 1.如图,在正方体-A 1B 1C 1D 1中,棱长为a ,M 、N 分别为 A 1 B 和上 的点,A 1M ==,则与平面1C 1C 的位置关系是( ) A .相交 B .平行 C .垂直 D .不能确定 2.将正方形沿对角线折起,使平面⊥平面,E 是中点,则AED ∠的大小为( ) A.45 B.30 C.60 D.90 ] 3.,,是从P 引出的三条射线,每两条的夹角都是60o,则直线 与平面所成的角的余弦值为( ) A .12 B 。 3 C 。 3 D 。 6 4.正方体—A 1B 1C 1D 1中,E 、F 分别是1与1的中点,则直线与D 1F 所成角的余弦值是 A .15 B 。13 C 。12 D 。 3 5. 在棱长为2的正方体1111D C B A ABCD -中,O 是底面的中心,E 、 F 分别是1CC 、的中点,那么异面直线和1FD 所成的角的余弦值等于( ) A . 5 10 B .32 C . 5 5 D . 5 15

6.在正三棱柱1B 1C 1中,若2,A A 1=1,则点A 到平面A 1的距离为( ) A . 4 3 B . 2 3 C . 4 33 D .3 : 7.在正三棱柱1B 1C 1中,若1,则1与C 1B 所成的角的大小为 ( ) o B. 90o o D. 75o 8.设E ,F 是正方体1的棱和D 1C 1的中点,在正方体的12条面对 角线中,与截面A 1成60°角的对角线的数目是( ) A .0 B .2 C .4 D .6 二、填空题:本大题共6小题,每小题5分,共30分. 9.在正方体-A 1B 1C 1D 1中,M 、N 分别为棱1和1的中点,则 〈CM ,1D N 〉的值为. 10.如图,正方体的棱长为1,C 、D 分别是两条棱的中点, A 、B 、M 是顶点, 那么点M 到截面的距离是 . 11.正四棱锥的所有棱长都相等,E 为中点,则直线与截面所成的角为 . 12.已知正三棱柱1B 1C 1的所有棱长都相等,D 是A 1C 1的中点,则 直线与平面B 1所成角的正弦值为 . : 13.已知边长为的正三角形中,E 、F 分别为和的中点,⊥面, 且2,设平面α过且与平行,则与平面α间的距离 A B | D C

空间向量在立体几何中的应用——夹角的计算习题-详细答案

【巩固练习】 一、选择题 1. 设平面内两个向量的坐标分别为(1,2,1),(-1,1,2),则下列向量中是平面的法向量的是( ) A. (-1,-2,5) B. (-1,1,-1) C. (1, 1,1) D. (1,-1,-1) 2. 如图,1111—ABCD A B C D 是正方体,11 11114 A B B E =D F =,则1BE 与1DF 所成角的余弦值是( ) A . 1715 B . 2 1 C .17 8 D . 2 3 3. 如图,111—A B C ABC 是直三棱柱,90BCA ∠=?,点11D F 、分别是1111A B AC 、的中点,若 1BC CA CC ==,则1BD 与1AF 所成角的余弦值是( ) A . 1030 B . 2 1 C .15 30 D . 10 15 4. 若向量(12)λ=a ,,与(212)=-b ,,的夹角的余弦值为8 9 ,则λ=( ) A .2 B .2- C .2-或 255 D .2或255 - 5. 在三棱锥P ABC -中,AB BC ⊥,1 2 AB=BC=PA ,点O D 、分别是AC PC 、的中点,OP ⊥ 底面ABC ,则直线OD 与平面PBC 所成角的正弦值( ) A . 621 B . 33 8 C .60 210 D . 30210 6.(2015秋 湛江校级期末)在正四棱锥S —ABCD 中,O 为顶点在底面内的投影,P 为侧棱SD 的中点,且SO=OD ,则直线BC 与平面PAC 的夹角是( ) A .30° B .45° C .60° D .75° 7. 在三棱锥P ABC -中,AB BC ⊥,1 ==2 AB BC PA ,点O D 、分别是AC PC 、的中点,OP ⊥ 底面ABC ,则直线OD 与平面PBC 所成角的正弦值是( )

立体几何中的向量公式

向量法解立体几何 用传统的方法解立体几何需要烦琐的分析、复杂的计算。而用向量法解题思路清晰、过程简洁。对立体几何的常见问题都可以起到化繁为简,化难为易的效果。 一. 证明两直线平行 已知两直线a 和b , b D C a B A ∈∈,,,,则?b a //存在唯一的实数λ使CD AB λ= 二. 证明直线和平面平行 1.已知直线αα∈∈?E D C a B A a ,,,,,且三点不共线,则a ∥?α存在有序实数 对μλ,使CE CD AB μλ+= 2.已知直线,,,a B A a ∈?α和平面 α的法向量n ,则a ∥n AB ⊥?α 三.证明两个平面平行 已知两个不重合平面βα,,法向量分别为n m ,,则α∥n m //?β 四.证明两直线垂直 已知直线b a ,。b D C a B A ∈∈,,,,则0=??⊥CD AB b a 五.证明直线和平面垂直 已知直线α和平面a ,且A 、B a ∈,面α的法向量为m ,则m AB a //?⊥α 六.证明两个平面垂直 已知两个平面βα,,两个平面的法向量分别为n m ,,则n m ⊥?⊥βα 七.求两异面直线所成的角 已知两异面直线b a ,,b D C a B A ∈∈,,,,则异面直线所成的角θ 为:CD AB ?=θcos 八.求直线和平面所成的角 A B

已知A,B 为直线a 上任意两点,n 为平面α的法向量,则a 和平面α所成的角θ为: 1. 当??? ? ??2, 0π 时?-=2πθ 2. 当??? ??∈?ππ,2 时2πθ-?= 九.求二面角 1.已知二面角βα--l ,且l CD l AB D C B A ⊥⊥∈∈,,,,且βα,则二面角的平面角θ 的大小为:=θ 2.已知二面角,βα--l n m ,分别为面βα,的法向量,则二面角的平面角θ的 大小与两个法向量所成的角相等或互补。即-=πθ 注:如何判断二面角的平面角和法向量所成的角的关系。 (1)通过观察二面角锐角还是钝角,再由法向量的成的角求之。 (2)通过观察法向量的方向,判断法向量所成的角与二面角的平面角相等还是互补。 十.求两条异面直线的距离 已知两条异面直线b a ,,m 是与两直线都垂直的向量,b B a A ∈∈,则两条 异面直线的距离d = 十一.求点到面的距离 已知平面α和点A,B 且αα∈?B A ,,m 为平面α的法向量,则点A 到平面 α 的距离d =

立体几何的计算

教案 教师姓名授课班级授课形式 授课日期年月日第周授课时数 授课章节名称立体几何的计算 教学目的计算立体几何中的有关角度和距离以及一些体积问题教学重点二面角和几何体的体积 教学难点二面角的计算 更新、补充、 删节内容 使用教具三角板 课外作业补充 课后体会注意立体图形与平面图形的转化

授课主要内容或板书设计

一、复习知识点 1. 有关角的计算 ⑴异面直线所成的角 a . 定义:设,a b 是异面直线,过空间任一点o 引'',a a b b ,则'a 与'b 所成的锐角(或直角)叫异面直线,a b 所成的角。 b .范围(0,90] c . 求法:作平行线,将异面转化成相交 ⑵线面所成的角 a . 定义:平面的一条斜线和它在平面上的射影所成的锐角,叫这条斜线和这个平面所成的角。 b .范围:[0,90] c . 求法:作垂线,找射影 ⑶二面角 a . 定义:从一条直线出发的两个半平面所组成的图形叫二面角,其大小通过二面角的平面角来度量。 b .二面角的平面角:以二面角的棱上任意一点为端点,在两个面内分别作垂直于棱的两条射线所成的角叫二面角的平面角。 c . 范围:[0,]π d .作法: 1定义法:过棱上任一点o 在两个半平面内分别引棱的两条垂线,OA OB ,则 AOB ∠为二面角的平面角 2三垂线定理法:过二面角的一个半平面内一点A ,作棱l 的垂线,垂足为O , 作另一个面的垂线,垂足为B ,连接OB ,则AOB ∠为二面角的平面角。 β α O B A 3作棱的垂面法:过二面角内任意一点O ,分别向两个平面作垂线,垂足为,A B 则,AO BO 所确定的平面与棱l 交于P ,则APB ∠为二面角的平面角。

高中数学《立体几何(文科)》练习题

高中数学《立体几何》练习题 1.用斜二测画法画出长为6,宽为4的矩形水平放置的直观图,则该直观图面积为 ( ) A.12 B.24 C.62 D.122 2.设,m n 是不同的直线,,αβ是不同的平面,下列命题中正确的是 ( ) A .若//,,m n m n αβ⊥⊥,则αβ⊥ B .若//,,m n m n αβ⊥⊥,则//αβ C .若//,,//m n m n αβ⊥,则α⊥β D .若//,,//m n m n αβ⊥,则//αβ 3.如图,棱长为1的正方体1111D C B A ABCD -中,P 为线段B A 1上的动点,则下列结论错误.. 的是 A .P D DC 11⊥ B .平面⊥P A D 11平面AP A 1 C .1AP D ∠的最大值为090 D .1PD AP +的最小值为22+ 4.一个几何体的三视图如图所示(单位:m),则该几何体的体积为______m 3. 5.若某几何体的三视图如图所示,则此几何体的体积等于 . 6.如图是一个几何体的三视图,则该几何体的体积是____________

7.如图,一个盛满水的三棱锥容器,不久发现三条侧棱上各有一个小洞F E D ,,,且知 1:2:::===FS CF EB SE DA SD ,若仍用这个容器盛水,则最多可盛水的体积是原来的 . 8.如图,四边形ABCD 为正方形,QA ⊥平面ABCD ,PD ∥QA ,QA =AB = 12 PD. (1)证明:PQ ⊥平面DCQ ; (2)求棱锥Q -ABCD 的体积与棱锥P -DCQ 的体积的比值.[来 9.如图所示的多面体中,ABCD 是菱形,BDEF 是矩形,ED ⊥面ABCD ,3 BAD π ∠=. (1)求证://BCF AED 平面平面. (2)若,BF BD a A BDEF ==-求四棱锥的体积。 10.在四棱锥ABCD P -中,底面ABCD 为矩形,ABCD PD 底面⊥,1=AB ,2=BC ,3=PD ,F G 、分别为CD AP 、的中点. (1) 求证:PC AD ⊥; (2) 求证://FG 平面BCP ; S F C B A D E

利用空间向量解立体几何(完整版)

向量法解立体几何 引言 立体几何的计算和证明常常涉及到二大问题:一是位置关系,它主要包括线线垂直,线面垂直,线线平行,线面平行;二是度量问题,它主要包括点到线、点到面的距离,线线、线面所成角,面面所成角等。教材上讲的比较多的主要是用向量证明线线、线面垂直及计算线线角,而如何用向量证明线面平行,计算点到平面的距离、线面角及面面角的例题不多,给老师对这部分内容的教学及学生解有关这部分内容的题目造成一定的困难,下面主要就这几方面问题谈一下自己的想法,起到一个抛砖引玉的作用。 一、基本工具 1.数量积: cos a b a b θ?= 2.射影公式:向量a 在b 上的射影为 a b b ? 3.直线0Ax By C ++=的法向量为 (),A B ,方向向量为 (),B A - 4.平面的法向量(略) 二、用向量法解空间位置关系 1.平行关系 线线平行?两线的方向向量平行 线面平行?线的方向向量与面的法向量垂直 面面平行?两面的法向量平行 2.垂直关系

线线垂直(共面与异面)?两线的方向向量垂直 线面垂直?线与面的法向量平行 面面垂直?两面的法向量垂直 三、用向量法解空间距离 1.点点距离 点()111,,P x y z 与()222,,Q x y z 的 距离为(PQ x =2.点线距离 求点()00,P x y 到直线:l 0Ax By C ++=的距离: 方法:在直线上取一点(),Q x y , 则向量PQ 在法向量 (),n A B =上的射影PQ n n ?= 即为点P 到l 的距离. 3.点面距离 求点()00,P x y 到平面α的距离: 方法:在平面α上去一点(),Q x y ,得向量PQ , 计算平面α的法向量n , 计算PQ 在α上的射影,即为点P 到面α的距离. 四、用向量法解空间角 1.线线夹角(共面与异面) 线线夹角?两线的方向向量的夹角或夹角的补角 2.线面夹角 求线面夹角的步骤:

立体几何与平面几何计算公式

立体几何与平面几何计算公式 初中数学几何中,不论是平面几何还是立体几何,他们的计算公式是我们进行数学试题计算的基础,因此,希望中考考生积极的做好几何计算公式的复习。下面是初中数学几何计算公式,一起了解一下: 1 、正方形 C:周长S:面积:a:边长 周长=边长×4 C=4a 正方形面积=边长×边长S= a a 2 、长方形C:周长S:面积a:边长 周长=(长+宽)×2 C = 2(a+b) 长方形面积=长×宽S = a b 3 、三角形s:面积a:底h:高 三角形面积=底×高÷2 s = ah÷2 4 、平行四边形s:面积a:底h:高 平行四边形面积=底×高s = ah 5、梯形s面积a上底b下底h高 梯形面积=(上底+下底)×高÷2 s = (a+b) h÷2 6 、圆形r:半径d:直径c:周长s:面积 半径=直径÷2 r = d/2 半径=周长÷圆周率÷2 r = c/2π 直径=半径×2 d = 2r 直径=周长÷圆周率d = c/π

周长=圆周率×直径 c = πd 周长=圆周率×半径×2 c = 2πr 圆面积=圆周率×半径×半径s = πr r 圆环面积=圆周率×(大圆半径×大圆半径-小圆半径×小圆半径) s=π(R R-r r) 7 、长方体V:体积s:面积a:长b: 宽h:高 体积=长×宽×高V = abh 8、正方体V:体积a:棱长 总棱长=棱长×12 C = 12a 表面积=棱长×棱长×6 S表= a a6 体积=棱长×棱长×棱长V = a a a 9、圆柱体V:体积s:底面积h:高 圆柱体侧面积=底面周长×高s= c h 圆柱体体积=底面积×高V= sh 圆柱体体积=圆周率×半径×半径×高V =πr r h 圆柱体体积=1/2×侧面积×半径V =1/2s侧r 10、圆锥体V:体积s:底面积h:高 圆锥体体积=1/3×底面积×高V = 1/3sh 圆锥体体积=1/3×圆周率×半径×半径×高V = 1/3×πr r h

高中立体几何计算方法总结

高中立体几何计算方法总结 1.位置关系: (1)两条异面直线相互垂直 证明方法:①证明两条异面直线所成角为90o;②证明线面垂直,得到线线垂直;③证明两条异面直线的方向量相互垂直。 (2)直线和平面相互平行 证明方法:①证明直线和这个平面内的一条直线相互平行; ②证明这条直线的方向量和这个平面内的一个向量相互平行;③证明这条直线的方向量和这个平面的法向量相互垂直。(3)直线和平面垂直 证明方法:①证明直线和平面内两条相交直线都垂直,②证明直线的方向量与这个平面内不共线的两个向量都垂直;③证明直线的方向量与这个平面的法向量相互平行。 (4)平面和平面相互垂直 证明方法:①证明这两个平面所成二面角的平面角为90o;②证明一个平面内的一条直线垂直于另外一个平面;③证明两个平面的法向量相互垂直。 2.求距离: 求距离的重点在点到平面的距离,直线到平面的距离和两个 平面的距离可以转化成点到平面的距离,一个点到平面的距 离也可以转化成另外一个点到这个平面的距离。

(1)两条异面直线的距离 求法:利用公式法。 (2)点到平面的距离 求法:①“一找二证三求”,三步都必须要清楚地写出来。 ②等体积法。③向量法。 3.求角 (1)两条异面直线所成的角 求法:①先通过其中一条直线或者两条直线的平移,找出这两条异面直线所成的角,然后通过解三角形去求得;②通过两条异面直线的方向量所成的角来求得,但是注意到异面直线所成角得范围是,向量所成的角范围是,如果求出的是钝角,要注意转化成相应的锐角。 (2)直线和平面所成的角 求法:①“一找二证三求”,三步都必须要清楚地写出来。 ②向量法,先求直线的方向量于平面的法向量所成的角α,那么所要求的角为或。 (3)平面与平面所成的角 求法:①“一找二证三求”,找出这个二面角的平面角,然后再来证明我们找出来的这个角是我们要求的二面角的平面角,最后就通过解三角形来求。②向量法,先求两个平面的法向量所成的角为α,那么这两个平面所成的二面角的平面角为α或π-α。

立体几何体积问题

立体几何体积问题 1、在如图所示的五面体ABCDEF 中,四边形ABCD 为菱形,且 60DAB ∠=, //EF 平面ABCD , 22EA ED AB EF ====, M 为BC 中 点. (1)求证 //FM 平面BDE ; (2)若平面ADE ⊥平面ABCD ,求F 到平面BDE 的距离. 【答案】(1)见解析;(2试题解析 (2)由(1)得//FM 平面BDE ,所以F 到平面BDE 的距离等于M 到平面BDE 的距离. 取AD 的中点H ,连接,EH BH , 因为四边形ABCD 为菱形,且60DAB ∠=, 2EA ED AB EF ===, 所以EH AD ⊥, BH AD ⊥, 因为平面ADE ⊥平面ABCD ,平面ADE ?平面ABCD AD =, 所以EH ⊥平面ABCD , EH BH ⊥, 因为EH BH ==,所以BE = 所以12BDE S ?==, 设F 到平面BDE 的距离为h ,又因为1 142 2 BDM BCD S S ??=== , 所以由 E BDM M BDE V V --=,得113 3h =? 解得h = .学

即F到平面BDE的距离为15 . 5 2、如图,在五面体ABCDEF中,底面ABCD为正方形,EF DC,平面ABCD⊥平面CDEF,AE CF ⊥. (1)求证CF DE ⊥; (2)若CF DE ==,求五面体ABCDEF的体积. =,24 DC EF 【答案】(1)见解析(2) 20 3 (Ⅱ)连接FA,FD,过F作FM⊥CD于M, 因为平面ABCD⊥平面CDEF且交线为CD,FM⊥CD, 所以FM⊥平面ABCD. 因为CF=DE,DC=2EF=4,且CF⊥DE, 所以FM=CM=1,学

空间几何中的角和距离的计算

空间角和距离的计算(1) 一 线线角 1.直三棱柱A 1B 1C 1-ABC ,∠BCA=900,点D 1,F 1分别是A 1B 1和A 1C 1的中点,若BC=CA=CC 1,求BD 1与AF 1所成角的余弦值. 2.在四棱锥P-ABCD 中,底面ABCD 是直角梯形,∠BAD=900,AD ∥BC ,AB=BC=a ,AD=2a ,且PA ⊥面ABCD ,PD 与底面成300角. (1)若AE ⊥PD ,E 为垂足,求证:BE ⊥PD ; (2)若AE ⊥PD ,求异面直线AE 与CD 所成角的大小. 二.线面角 1.正方体ABCD-A 1B 1C 1D 1中,E ,F 分别为BB 1、CD 的中点,且正方体的棱长为2. (1)求直线D 1F 和AB 和所成的角; (2)求D 1F 与平面AED 所成的角. F 1D 1B 1 C 1A 1 B A C A B C D P E C D E F D 1 C 1 B 1 A 1 A B

2.在三棱柱A 1B 1C 1-ABC 中,四边形AA 1B 1B 是菱形,四边形BCC 1B 1是矩形,C 1B 1⊥AB ,AB=4,C 1B 1=3,∠ABB 1=600,求AC 1与平面BCC 1B 1所成角的大小. 三.二面角 1.已知A 1B 1C 1-ABC 是正三棱柱,D 是AC 中点. (1)证明AB 1∥平面DBC 1; (2)设AB 1⊥BC 1,求以BC 1为棱,DBC 1与CBC 1为面的二面角的大小. 2.ABCD 是直角梯形,∠ABC=900,SA ⊥面ABCD ,SA=AB=BC=1,AD=0.5. (1)求面SCD 与面SBA 所成的二面角的大小; (2)求SC 与面ABCD 所成的角. 3.已知A 1B 1C 1-ABC 是三棱柱,底面是正三角形,∠A 1AC=600,∠A 1AB=450,求二面角B —AA 1—C 的大小. B 1 C 1 A 1 B A C D B 1 C 1 A 1B A C B A D C S B 1 C 1 B C A 1

2020届高考数学(理)热点猜押练一 热点练15 立体几何中的证明与计算问题(含解析)

2020届高考数学(理)热点猜押练一致胜高考必须掌握的 20个热点 热点练15 立体几何中的证明与计算问题 1.如图,正四棱柱ABCD-A1B1C1D1中,AA1=2AB=4,点E在CC1上且C1E=3EC. (1)证明:A1C⊥平面BED. (2)求二面角A1-DE-B的余弦值. 2.如图,三棱台ABC-EFG的底面是正三角形,平面ABC⊥平面BCGF,CB=2GF, BF=CF. (1)求证:AB⊥CG. (2)若BC=CF,求直线AE与平面BEG所成角的正弦值.

3.如图,在底面为矩形的四棱锥P-ABCD中,PB⊥AB. (1)证明:平面PBC⊥平面PCD. (2)若异面直线PC与BD所成角为60°,PB=AB,PB⊥BC,求二面角B-PD-C的大小. 4.如图,在四棱锥P-ABCD中,底面ABCD是边长为1的菱形,∠BAD=45°,PD=2,M 为PD的中点,E为AM的中点,点F在线段PB上,且PF=3FB. (1)求证:EF∥平面ABCD. (2)若平面PDC⊥底面ABCD,且PD⊥DC,求平面PAD与平面PBC所成锐二面角的余弦值.

5.如图,多面体ABC-DB1C1为正三棱柱ABC-A1B1C1沿平面DB1C1切除部分所得,M为CB1的中点,且BC=BB1=2. (1)若D为AA1中点,求证AM∥平面DB1C1. (2)若二面角D-B1C1-B大小为错误!未找到引用源。,求直线DB1与平面ACB1所成角的正弦值. 6.如图所示,等腰梯形ABCD的底角∠BAD=∠ADC=60°,直角梯形ADEF所在的平面垂直于平面ABCD,且∠EDA=90°,ED=AD=2AF=2AB=2. (1)证明:平面ABE⊥平面EBD. (2)点M在线段EF上,试确定点M的位置,使平面MAB与平面ECD所成的锐二面角的余弦值为错误!未找到引用源。.

考点17 立体几何中的计算问题(解析版)

考点17 立体几何中的计算问题 【知识框图】 【自主热身,归纳总结】 1、(2019扬州期末) 底面半径为1,母线长为3的圆锥的体积是________. 【答案】 22π 3 【解析】圆锥的高为h =32-12=22,圆锥的体积V =13×π×12 ×22=22π3 . 2、(2019镇江期末)已知一个圆锥的底面积为π,侧面积为2π,则该圆锥的体积为________. 【答案】 3π 3 【解析】思路分析 先求出圆锥的底面半径和高. 设圆锥的底面半径、高、母线长分别为r ,h ,l ,则?????πr 2 =π,πrl =2π,解得? ????r =1, l =2.所以h = 3.圆锥的体积 V =13Sh =3π 3 . 3、(2019宿迁期末)设圆锥的轴截面是一个边长为2 cm 的正三角形,则该圆锥的体积为________ cm 3 . 【答案】 3 3 π 【解析】 圆锥的底面半径R =1,高h =22-12=3,故圆锥的体积为V =13×π×12 ×3=33π. 4、(2019南通、泰州、扬州一调)已知正四棱柱的底面长是3 cm ,侧面的对角线长是3 5 cm ,则这个正四棱柱的体积为________cm 3 . 【答案】 54 【解析】由题意知,正四棱柱的高为(35)2 -32 =6,所以它的体积V =32 ×6=54,故答案为54. 5、(2019南京学情调研) 如图,在正三棱柱ABCA 1B 1C 1中,AB =2,AA 1=3,则四棱锥A 1B 1C 1CB 的体积是________.

【答案】2 3 【解析】如图,取B 1C 1的中点E ,连结A 1E ,易证A 1E ⊥平面BB 1C 1C ,所以A 1E 为四棱锥A 1B 1C 1CB 的高,所以V 四棱锥A 1B 1C 1CB =13S 矩形BB 1C 1C ×A 1E =1 3 ×(2×3)×3=2 3. 6、(2018盐城三模)若一圆锥的底面半径为1,其侧面积是底面积的3倍,则该圆锥的体积为 . 【答案】 3 【解析】设圆锥的高为h ,母线为l ,由2 =,=S rl S r ππ侧底得,2 1=31l ππ???,即=3l ,h == 故该圆锥的体积为2 113π???= .

高考中常见的立体几何题型和解题方法

高考中常见的立体几何题型和解题方法 黔江中学高三数学教师:付 超 高考立体几何试题一般共有2——3道(选择、填空题1——2道, 解答题1道), 共计总分18——23分左右,考查的知识点在20个以内. 选择填空题考核立几中的 逻辑推理型问题, 而解答题着重考查立几中的计算型问题, 当然, 二者均应以正 确的空间想象为前提. 随着新的课程改革的进一步实施,立体几何考题正朝着“多 一点思考,少一点计算”的方向发展.从历年的考题变化看, 以简单几何体为载体 的线面位置关系的论证,角与距离的探求是常考常新的热门话题. 一、知识整合 1.有关平行与垂直(线线、线面及面面)的问题,是在解决立体几何问题的过 程中,大量的、反复遇到的,而且是以各种各样的问题(包括论证、计算角、与 距离等)中不可缺少的内容,因此在主体几何的总复习中,首先应从解决“平行 与垂直”的有关问题着手,通过较为基本问题,熟悉公理、定理的内容和功能, 通过对问题的分析与概括,掌握立体几何中解决问题的规律——充分利用线线平 行(垂直)、线面平行(垂直)、面面平行(垂直)相互转化的思想,以提高逻辑思维能 力和空间想象能力. 2. 判定两个平面平行的方法: (1)根据定义——证明两平面没有公共点; (2)判定定理——证明一个平面内的两条相交直线都平行于另一个平面; (3)证明两平面同垂直于一条直线。 3.两个平面平行的主要性质: ⑴由定义知:“两平行平面没有公共点”。 ⑵由定义推得:“两个平面平行,其中一个平面内的直线必平行于另一个平 面。 ⑶两个平面平行的性质定理:“如果两个平行平面同时和第三个平面相交, 那 么它们的交线平行”。 ⑷一条直线垂直于两个平行平面中的一个平面,它也垂直于另一个平面。 ⑸夹在两个平行平面间的平行线段相等。 ⑹经过平面外一点只有一个平面和已知平面平行。 以上性质⑵、⑷、⑸、⑹在课文中虽未直接列为“性质定理”,但在解题过 程中均可直接作为性质定理引用。 4.空间角和距离是空间图形中最基本的数量关系,空间角主要研究射影以 及与射影有关的定理、空间两直线所成的角、直线和平面所成的角、以及二面角 和二面角的平面角等.解这类问题的基本思路是把空间问题转化为平面问题去解 决. 空间角,是对由点、直线、平面所组成的空间图形中各种元素间的位置关系 进行定量分析的一个重要概念,由它们的定义,可得其取值范围,如两异面直线 所成的角θ∈(0,2π],直线与平面所成的角θ∈0,2π?????? ,二面角的大小,可用它们的平面角来度量,其平面角θ∈[0,π].对于空间角的计算,总是通过一定 的手段将其转化为一个平面内的角,并把 它置于一个平面图形,而且是一个三

高中数学立体几何空间距离问题

立体几何空间距离问题 空间中距离的求法是历年高考考查的重点,其中以点与点、点到线、点到面的距离为基础,求其他几种距离一般化归为这三种距离. ●难点磁场 (★★★★)如图,已知ABCD是矩形,AB=a,AD=b,P A⊥平面ABCD,P A=2c,Q 是P A的中点. 求:(1)Q到BD的距离; (2)P到平面BQD的距离. P为RT△ABC所在平面α外一点,∠ACB=90°(如图) (1)若PC=a,∠PCA=∠PCB=60°,求P到面α的距离及PC和α所成的角 (2)若PC=24,P到AC,BC的距离都是6√10,求P到α的距离及PC和α所成角(3)若PC=PB=PA,AC=18,P到α的距离为40,求P到BC的距离

●案例探究 [例1]把正方形ABCD 沿对角线AC 折起成直二面角,点E 、F 分别是AD 、BC 的中点,点O 是原正方形的中心,求: (1)EF 的长; (2)折起后∠EOF 的大小. 命题意图:考查利用空间向量的坐标运算来解决立体几何问题,属★★★★级题目. 知识依托:空间向量的坐标运算及数量积公式. 错解分析:建立正确的空间直角坐标系.其中必须保证x 轴、y 轴、z 轴两两互相垂直. 技巧与方法:建系方式有多种,其中以O 点为 原点,以OB 、OC 、OD 的方向分别为x 轴、y 轴、z 轴的正方向最为简单. 解:如图,以O 点为原点建立空间直角坐标系O —xyz ,设正方形ABCD 边长为a ,则A (0,-22a ,0),B (22a ,0,0),C (0, 22a ,0),D (0,0, 22a ),E (0,-4 2 a , a ),F ( 42a , 4 2 a ,0) 21| |||,cos ,2||,2||8042)42)(42(420) 0,4 2 ,42(),42,42,0()2(23 ,43)420()4242()042(||)1(2 2222-=?>=<== - =?+-+?=?=-==∴=-+++-=OF OE OF OE OF OE a OF a OE a a a a a OF OE a a OF a a OE a EF a a a a a EF ∴∠EOF =120° [例2]正方体ABCD —A 1B 1C 1D 1的棱长为1,求异面直线A 1C 1与AB 1间的距离. 命题意图:本题主要考查异面直线间距离的求法,属★★★★级题目. 知识依托:求异面直线的距离,可求两异面直线的公垂线,或转化为求线面距离,或面面距离,亦可由最值法求得.

N维空间几何体质心的计算方法.

N维空间几何体质心的计算方法 摘要:本文主要是求一个图形或物体的质心坐标的问题,通过微积分方面的知识来求解,从平面推广到空间,问题也由易到难。首先提出质心或形心问题,然后给出重心的定义,再由具体的例子来求解相关问题。 关键字:质心重心坐标平面薄板二重积分三重积分 一.质心或形心问题: 这类问题的核心是静力矩的计算原理。 1.均匀线密度为M的曲线形体的静力矩与质心: 静力矩的微元关系为 , dMx yudl dMy xudl ==. 其中形如曲线L( (, y f x a x b =≤≤的形状体对x轴与y轴的静力矩分别 为( b

a y f x S = ? , ( b y a M u f x =? 设曲线AB L 的质心坐标为( ,x y,则,, y x M M x y

M M == 其 中( b a M u x d x u l == ? 为AB L 的质量,L为曲线弧长。若在式 y M x M

= 与式 x M y M = 两端同乘以2π,则可得 到22( b a y xl f x S ππ == ? ,

22( b a x yl f x S ππ == ? ,其中x S 与y S 分别表示曲线AB L 绕x轴与y轴旋转而成的旋转体的侧面积。 2.均匀密度平面薄板的静力矩与质心: 设f(x为 [],a b 上的连续非负函数,考虑形如区域 {} (,,0(

D x y a x b y f x =≤≤≤≤ 的薄板质心,设M为其密度,利用微元法,小曲边梯形MNPQ的形心坐标为1 (,(, 2 y f y x y x x ≤≤+? ,当分割无限细化时,可当小曲边梯形MNPQ的质量视为集中于点 1 (,( 2 x f x 处的一个质点,将它对x轴与y轴分别取静力矩微元可有 1 (( 2 x dM u f x f x dx

立体几何中的计算问题

立体几何中的计算问题 1.求底面边长为2,高为1的正三棱锥的全面积. 2.一个正三棱台的上、下底面边长分别是3 cm 和6 cm ,高是32 cm. (1)求三棱台的斜高; (2)求三棱台的侧面积和表面积. 3.(1) 若一个圆锥的侧面展开图是面积为2π的半圆面,则该圆锥的体积为___ (2)平行四边形ABCD 满足AD=2,AB=4,60BAD ? ∠=,将平行四边形ABCD 绕边AB 所在的直线旋转一周,由此形 成的几何体是什么?并求出其表面积 4.正三棱锥的棱长为1,侧面等腰三角形的顶角为30度,一只小虫沿从B 出发 ,沿侧面爬行一周后回到B , 求路径的最短距离. 5.若一个正方体的棱长为a ,则 (1)该正方体外接球的体积为 ;(2)该正方体的内切球的表面积为 . 6. 若一个等边圆柱(轴截面为正方形的圆柱)的侧面积与一个球的表面积相等,则这个圆柱与该球的体积之比是 .

7.已知球的半径为R ,在球内作一个内接圆柱,当这个圆柱底面半径与高为何值时,它的侧面积最大? 8.(2012·山东卷)如图,正方体ABCD -A 1B 1C 1D 1的棱长为1,E ,F 分别为线段AA 1,B 1C 上的点,则三棱锥D 1-EDF 的体积为________. 9.已知正方形ABCD 的边长为2,E ,F 分别为BC ,DC 的中点,沿 AE ,EF ,AF 折成一个四面体,使B ,C ,D 三点重合,则这个四面体的体积为 . 10.如图,在长方体1111ABCD A BC D -中,13,2AB AD cm AA cm ===,则四棱锥11A BB D D -的体积为 3cm 11.正三棱柱ABC -A 1B 1C 1的所有棱长均为1,D 为线段AA 1上的点,则三棱锥B 1-BDC 1的体积为________. 12.如图,在三棱锥P -ABC 中,AC =BC =2,∠ACB =90°,AP =BP =AB ,PC ⊥AC . (1)求证:PC ⊥AB ; (2)求点C 到平面APB 的距离. 13.若三棱锥S ABC -的所有顶点都在球O 的球面上,SA ⊥平面ABC ,SA =1AB =,2AC =,60BAC ∠=?,则球O 的表面积为______.

立体几何存在性问题

立体几何存在性问题
未命名
一、解答题 1.在多面体
中,底面
是梯形,四边形
形,

,面
面,
.
.
(1)求证:平面
平面 ;
是正方
(2)设 为线段 上一点,
,试问在线段 上是否存在一点 ,使得
平面 ,若存在,试指出点 的位置;若不存在,说明理由?
(3)在(2)的条件下,求点 到平面 的距离.
2.如图,四棱锥
中,底面
是直角梯形,


,侧面 是等腰直角三角形,
,平面
平面
,点 分别是棱
上的点,平面 平面
(Ⅰ)确定点 的位置,并说明理由;
(Ⅱ)求三棱锥
的体积.
3.如图,在长方体
中,
,点 在棱 上,


点 为棱 的中点,过 的平面 与棱 为菱形.
交于 ,与棱 交于 ,且四边形
(1)证明:平面
平面

(2)确定点 的具体位置(不需说明理由),并求四棱锥
的体积.
4.如图 2,已知在四棱锥
中,平面
平面 ,底面 为矩形.
(1)求证:平面
平面 ;
(2)若 5.如图,三棱锥 点.
的三条侧棱两两垂直,
,试求点 到平面 的距离. , , 分别是棱 , 的中
(1)证明:平面
平面 ;
(2)若四面体 的体积为 ,求线段 的长.
6.如图,在四棱锥
中,



.

高中数学立体几何专:空间距离的各种计算(含答案)

高中数学立体几何 空间距离 1.两条异面直线间的距离 和两条异面直线分别垂直相交的直线,叫做这两条异面直线的公垂线;两条异面直线的公垂线在这两条异面直线间的线段的长度,叫做两条异面直线的距离. 2.点到平面的距离 从平面外一点引一个平面的垂线,这点和垂足之间的距离叫做这个点到这个平面的距离. 3.直线与平面的距离 如果一条直线和一个平面平行,那么直线上各点到这平面的距离相等,且这条直线上任意一点到平面的距离叫做这条直线和平面的距离. 4.两平行平面间的距离 和两个平行平面同时垂直的直线,叫做这两平行平面的公垂线,它夹在两个平行平面间的公垂线段的长叫做这两个平行平面的距离. 题型一:两条异面直线间的距离 【例1】 如图,在空间四边形ABCD 中,AB =BC =CD =DA =AC =BD =a ,E 、F 分别是AB 、CD 的中点. (1)求证:EF 是AB 和CD 的公垂线; (2)求AB 和CD 间的距离; 【规范解答】 (1)证明:连结AF ,BF ,由已知可得AF =BF . 又因为AE =BE ,所以FE ⊥AB 交AB 于E . 同理EF ⊥DC 交DC 于点F . 所以EF 是AB 和CD 的公垂线. (2)在Rt △BEF 中,BF = a 23 ,BE =a 21, 所以EF 2=BF 2-BE 2=a 2 12,即EF =a 22 . 由(1)知EF 是AB 、CD 的公垂线段,所以AB 和CD 间的距离为 a 2 2 . 【例2】 如图,正四面体ABCD 的棱长为1,求异面直线AB 、CD 之间的距离. 设AB 中点为E ,连CE 、ED . ∵AC =BC ,AE =EB .∴CD ⊥AB .同理DE ⊥AB . ∴AB ⊥平面CED .设CD 的中点为F ,连EF ,则AB ⊥EF . 同理可证CD ⊥EF .∴EF 是异面直线AB 、CD 的距离. ∵CE =23,∴CF =FD =21,∠EFC =90°,EF =2221232 2 =??? ??-??? ? ??. ∴AB 、CD 的距离是 2 2 . 【解后归纳】 求两条异面直线之间的距离的基本方法: (1)利用图形性质找出两条异面直线的公垂线,求出公垂线段的长度. (2)如果两条异面直线中的一条直线与过另一条直线的平面平行,可以转化为求直线与平面的距离. (3)如果两条异面直线分别在两个互相平行的平面内,可以转化为求两平行平面的距离. 题型二:两条异面直线间的距离 【例3】 如图(1),正四面体ABCD 的棱长为1,求:A 到平面BCD 的距离; 过A 作AO ⊥平面BCD 于O ,连BO 并延长与CD 相交于E ,连AE . ∵AB =AC =AD ,∴OB =OC =OD .∴O 是△BCD 的外心.又BD =BC =CD , ∴O 是△BCD 的中心,∴BO =3 2BE =33 2332= ?. 又AB =1,且∠AOB =90°,∴AO =363312 22=??? ? ??- =-BO AB .∴A 到平面BCD 的距离是36. 例1题图 例2题图 例3题图

31知识讲解 空间向量在立体几何中的应用三——距离的计算

空间向量在立体几何中的应用三——距离的计算 【学习目标】 1. 了解空间各种距离的概念,掌握求空间距离的一般方法; 2. 能熟练地将直线与平面之间的距离、两平行平面之间的距离转化为点到平面的距离. 【要点梳理】 要点一:两点之间的距离 1. 定义 连接两点的线段的长度叫作两点之间的距离. 如图,已知空间中有任意两点M N ,,那么这两点间的距离d MN =. 2. 向量求法 设()()111222M x y z N x y z ,,,,,,则 () ()()2 22 121212d MN x x y y z z == ++ . 要点二:点到直线的距离 1. 定义 从直线外一点向直线引垂线,点到垂足之间线段的长度就是该点到直线的距离. 如图,设l 是过点P 平行于向量s 的直线,A 是直线l 外一定点. 过点A 作做垂直于l 的直线,垂足为A ',则AA'即为点A 到直线l 的距离. 要点诠释:因为直线和直线外一点确定一个平面,所以空间点到直线的距离问题就是空间中某一个平面内的点到直线的距离距离. 2. 向量求法 2 2 d=PA PA s 要点诠释: (1)本公式利用勾股定理推得:点A 到直线l 的距离2 2 AA'=PA PA' ,其中PA'是PA 在s 上的射影,即为0PA s . (2)0cos PA PA =PA APA'=?∠s s s ,0s 为s 的单位向量,其计算公式为0=s s s . 3.计算步骤 ① 在直线l 上取一点P ,计算点P 与已知点A 对应的向量PA ; ② 确定直线l 的方向向量s ,并求其单位向量0= s s s ; ③ 计算PA 在向量s 上的投影0PA s ; ④ 计算点A 到直线l 的距离2 2 0d=PA PA s . 要点诠释:在直线上选取点时,应遵循“便于计算”的原则,可视情况灵活选择. 4. 算法框图

九章算术中的立体几何

《九章算术》中的立体几何 《九章算术》文字古奥,历代注释者甚多,其中以刘徽的注本最为有名.刘徽是我国魏晋时期著名数学家,他在曹魏末年撰成《九章算术注》九卷。在继承的基础上,又提出了许多自己的创见与发明,刘徽的观点,对现今的数学有很多借鉴的地方。 《九章算术》是一部问题集,全书分为九章,共收有246个问题,每题都有问、答、术三部分组成。内容涉及算术、代数、几何等诸多领域,并与实际生活紧密相连,充分体现了中国人的数学观与生活观。其中卷第五“商功”,主要讲各种几何体体积的计算,包括现阶段高中数学教材中的棱柱、棱锥、棱台,圆柱、圆锥、圆台,或可化为上述几何体的几何体体积的计算。 《九章算术》是东方数学的思想之源,也是我国多年来各级各类考试的重要题库。卷第五“商功”第25题作为2015年全国卷(Ⅰ)(文理)第6题,通过古题新解考查阅读理解能力,通过圆锥体积的计算考查空间想象能力与求解运算能力。 题目是:《九章算术》是我国古代内容极为丰富的数学名著,书中有如下问题:“今有委米依垣内角,下周八尺,高五尺。问:积及为米几何?” 其意思为:“在屋内墙角处堆放米(如图,米堆为一个圆锥的 四分之一),米堆底部的弧长为8尺,米堆的高为5尺,问米 堆的体积和堆放的米各为多少?”已知1斛米的体积约为 1.62立方尺,圆周率约为3,估算出堆放的米约有(解法见 例25) A.14斛 B.22斛 C.36斛 D.66斛 2015年湖北理科19题、文科20题选用《九章算术》“商功”第16题“阳马”与第17题“鳖臑”的组合考查立体几何中线、面间的位置关系与度量关系. 《九章算术》卷第五“商功”共收录28个题目,现将这28个问题整理如下,供参考。 【例1】今有穿地积一万尺.问为坚、壤各几何? 【注释】穿地:挖地取土. 坚:坚实的土. 壤:松软的土. 【译文】现挖地体积为1000立方尺,问换算成坚土、松土各多少? 【解析】本题是各种土方量的换算,有专门的换算比例,这里不赘述. 【说明】从例2到例7都是直四棱柱求体积问题,以例2为例,介绍它们的算法.【例2】今有城下广四丈,上广二丈,高五丈,袤一百二十六丈五尺。问积几何?【注释】广袤:广,东西方向,袤,南北方向. 【译文】现有城,下底长4丈,上底长2丈,高5丈,

相关文档
最新文档