现在我们从数学的角度,分析一下这种方法的原理。首先建立一个平面直角坐标系,用来模拟的Minecraft的世界位置,假设Steve出生在点A处,丢出一颗末影珍珠,记落地点为A’。再随机走到B点,重复操作,记作点B’。
根据两点确定一条直线的定律,可以通过4点确定2条直线。又因为在同一平面中,不平行的两条直线一定相交。据此就可以轻松地画出交点P,这就是要塞的位置。
[Pv.1-1] 利用交点确定要塞坐标
刚才讨论的是几何原理。如果给这些点代入具体的数据,用联立一次函数解方程的方法,就能够计算出要塞的坐标了。得到4个点坐标。代入解析式得到ya和yb。最后联立函数,计算出交点的坐标,要塞位于(40.8,40)。
[Pv.1-2] 联立一次函数解方程
但在实际测距的过程中,由于不可避免的角度偏差,并且要塞位置偏远,这使得误差大的足以让你找不到要塞在哪。此时,就可以用3次测距取平均值的方法大大缩短误差。如下图所示测距三次,由于误差原因交于3点a.b.c。因为不在同一条直线上,首尾相接的三条线段构成三角形,故将交点的封闭图形视作三角形。
为了求到最精确的点,应该先画出该三角形的水平宽和铅锤高。取宽和高的中垂线,交三角形内部于点Q。Q即为要塞坐标。(即三角形外接矩形的重心)
为了求到最精确的点,应该先画出该三角形的水平宽和铅锤高。取宽和高的中垂线,交三角形内部于点Q。Q即为要塞坐标。(即三角形外接矩形的重心)
1、制作末影之眼需要的材料为末影珍珠和烈焰粉,当玩家集齐材料后就能在工作台上制作末影之眼了;2、末影珍珠可以通过击杀末影人来获得,在要塞祭坛的箱子里也会有概率获得,并且也可以和牧师村民购买获得;3、烈焰粉则。
[Pv.1-3] 误差的确定算法
1:杀死末影人,收集12颗末影珍珠。2:去地狱杀死烈焰人,收集至少16根烈焰棒,合成烈焰粉。3:末影珍珠+烈焰粉合成为末影之眼。
但三次测距本身需要解6次二元一次方程组,再确定宽高平均值,并且数据都保留了3位小数,计算量非常大,很容易算错。这里up主采用了C语言编程的方法,实现了计算的自动化。下面是程序的完整代码。
include <math.h> //开平方&根号操作 int main(void){ /***********************数据定义区域***********************/ int i,j; //循环(无实意) double p; //用于稍后的排序 double x[6],y[6]; //指测量坐标 共测量6个点 double k[3],b[3]; //指函数参数 共有3个一次函数 double Rx[3],Ry[3]; //指交点坐标 3个函数共有3个交点 double RL,RH; //指构成三角形的水平宽 铅锤高坐标(结果) /***********************用户交互区域***********************/ printf(&34;); printf(&34;); j=-1; for(i=1;i<4;i++){ //循环3次获取坐标位置 j++; printf(&34;,i); scanf(&34;,&x[j]); printf(&34;,i); scanf(&34;,&y[j]); j++; printf(&34;,i); scanf(&34;,&x[j]); printf(&34;,i); scanf(&34;,&y[j]); printf(&34;); } /**********************求并解函数解析式********************/ j=0; for(i=0;i<3;i++){ k[i]=(y[j+1]-y[j])/(x[j+1]-x[j]); //求解系数k b[i]=y[j]-(x[j]*k[i]); //求解常数项b j+=2; } for(i=0;i<2;i++){ Rx[i]=(b[i]-b[i+1])/(k[i+1]-k[i]); //求解交点(1-2/2-3) Ry[i]=Rx[i]*k[i]+b[i]; //y=kx+b } Rx[2]=(b[2]-b[0])/(k[0]-k[2]); //求解交点(1-3) Ry[2]=Rx[2]*k[2]+b[2]; /***********************误差确认区域***********************/ //排序算法 排列三个交点Rx与Ry p作为交换变量 if(Rx[0]<Rx[1]){ p=Rx[0]; Rx[0]=Rx[1]; Rx[1]=p; }if(Rx[0]<Rx[2]){ p=Rx[0]; Rx[0]=Rx[2]; Rx[2]=p; }if(Rx[1]<Rx[2]){ p=Rx[1]; Rx[1]=Rx[2]; Rx[2]=p; }if(Ry[0]<Ry[1]){ p=Ry[0]; Ry[0]=Ry[1]; Ry[1]=p; }if(Ry[0]<Ry[2]){ p=Ry[0]; Ry[0]=Ry[2]; Ry[2]=p; }if(Ry[1]<Ry[2]){ p=Ry[1]; Ry[1]=Ry[2]; Ry[2]=p; } /*此时大小排列:Rx[0]>Rx[1]>Rx[2] 即L=Rx[0]-Rx[2];*/ RL=0.5*(Rx[0]+Rx[2]); RH=0.5*(Ry[0]+Ry[2]); /***********************用户交互区域***********************/ printf(&34;,RL,RH); printf(&34;); printf(&34;,x[0],y[0],x[1],y[1]); printf(&34;,x[2],y[2],x[3],y[3]); printf(&34;,x[4],y[4],x[5],y[5]); printf(&34;,k[0],b[0],k[1],b[1],k[2],b[2]); printf(&34;,Rx[0],Ry[0],Rx[1],Ry[1],Rx[2],Ry[2]); printf(&34;); getch(); return 0;}
摆到附魔台旁,打末影人掉珍珠,书馆,没末影眼,再合成书架,传送门,12个,烈焰 粉和珍珠合成末影眼,不是说地牢没用,去地狱打烈焰,就变黑,点烈焰棒分解烈焰粉,摆到传送门上,手机有地牢,电脑才有其实手机没有。
[Pv.1-4] 要塞的生成算法
例如测定白色点的要塞,在原点进行第一次测定,向前第二次测定,若走动过远,第三次会导致目标指向其它位置。这样就会导致计算结果完全错误,按照上述方法,得出了错误的点。
1、制作末影之眼需要的材料为末影珍珠和烈焰粉,当玩家集齐材料后就能在工作台上制作末影之眼了。2、末影珍珠可以通过击杀末影人来获得,在要塞祭坛的箱子里也会有概率获得,并且也可以和牧师村民购买获得。3、烈焰粉则。
因此,在测量时走动不宜过远,±50m最佳。
要想合成末影之眼,先来合成烈焰粉,而合成烈焰粉的方法则是要分解烈焰棒。不过,这个步骤中大家不用担心需要大量的烈焰棒才能够得到烈焰粉,一根烈焰棒就可以合成两个烈焰粉。所以,只要我们手中有烈焰棒的话,就不要犹豫地。
[Pv.1-5] 生存技术检测题
本期生存技术检测题Ep.1