这个C程序的数学原理是什么?
有4个圆塔,圆心分别为(2,2)、(-2.2)、(-2,-2)、(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。此题的程序倒是没有什么难度,但自己不清楚为什么要这么写,它的数学原理是什么?
应该与直角坐标系有关吧!
中学的很多东西都不记得了!!
#include <stdio.h>
void main()
{
int h=10;
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
printf("Please input a point(x,y):");
scanf("%f,%f",&x,&y);
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if (d1>1 && d2>1 && d3>1 && d4>1)
h=0;
printf("The point's h:%d\n",h);
}
----------------解决方案--------------------------------------------------------
先学解析几何。。。。。。。
----------------解决方案--------------------------------------------------------
不用那么高深........
看程序的意思,就是判断该点的位置是不是在四个圆中的某个圆内(和圆心坐标距离小于1)
如果在圆内,高度为10,在圆外,高度为0
不过........有造的这么难看的塔吗?就是一根圆柱....
----------------解决方案--------------------------------------------------------
几何中平面上求两点间的距离。d=(x+ -x1)*(x+ -x2)+(y+ -y1)*(y+ -y2),根据点在第几象限用此公式既可求出。
----------------解决方案--------------------------------------------------------
那四行可以合并为一行
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]心若止水[/un] 在 2008-4-15 16:43 的发言:[/bo]
几何中平面上求两点间的距离。d=(x+ -x1)*(x+ -x2)+(y+ -y1)*(y+ -y2),根据点在第几象限用此公式既可求出。
几何中平面上求两点间的距离。d=(x+ -x1)*(x+ -x2)+(y+ -y1)*(y+ -y2),根据点在第几象限用此公式既可求出。
这个公式与程序中的式子有关系吗??
这个是求两点的距离,程序中是求一点在直角坐标系中的位置,也可以说是否在坐标系圆内!
看来,这方面自己是得好好补补了!!!
----------------解决方案--------------------------------------------------------