import UnitHelper from "../utils/unit";
|
|
var coordinateHelper = {
|
/**
|
* @description 得到最优坐标间隔
|
*/
|
GetOptimalSpace(refSpace) {
|
|
if (refSpace < 0.000001) {
|
return 1;
|
}
|
if (refSpace < 0.01) {
|
var refSpace2 = refSpace * 100;
|
return coordinateHelper.GetOptimalSpace(refSpace2) / 100;
|
}
|
else if (refSpace < 0.1) {
|
var refSpace2 = refSpace * 10;
|
return coordinateHelper.GetOptimalSpace(refSpace2) / 10;
|
}
|
else if (refSpace < 1) {
|
if (refSpace < 0.15)
|
return 0.1;
|
else if (refSpace < 0.22)
|
return 0.2;
|
//else if (refSpace < 0.32)
|
// return 0.25;
|
else if (refSpace < 0.6)
|
return 0.5;
|
//else if (refSpace < 0.85)
|
// return 0.75;
|
else
|
return 1;
|
}
|
|
else if (refSpace < 3) {
|
if (refSpace < 1.2)
|
return 1;
|
//else if (refSpace < 1.7)
|
// return 1.5;
|
else if (refSpace < 2.3)
|
return 2;
|
//else if (refSpace < 2.7)
|
// return 2.5;
|
else
|
return 3;
|
}
|
else if (refSpace < 11) {
|
if (refSpace < 5.5)
|
return 5;
|
//else if (refSpace < 6.5)
|
// return 6;
|
//else if (refSpace < 7.8)
|
// return 7.5;
|
else if (refSpace < 8.5)
|
return 8;
|
else
|
return 10;
|
}
|
else if (refSpace < 16)
|
return 15;
|
else if (refSpace < 22)
|
return 20;
|
else if (refSpace < 35)
|
return 25;
|
else if (refSpace < 41)
|
return 40;
|
else if (refSpace < 51)
|
return 50;
|
else if (refSpace < 61)
|
return 60;
|
else if (refSpace < 71)
|
return 70;
|
else if (refSpace < 78)
|
return 75;
|
else if (refSpace < 150)
|
return 100;
|
else if (refSpace < 230)
|
return 200;
|
else if (refSpace < 270) {
|
return 250;
|
}
|
else {
|
if (refSpace < 1500) {
|
var a = Math.ceil(refSpace / 100);
|
return a * 100;
|
}
|
else {
|
var a = Math.ceil(refSpace / 1000);
|
return a * 1000;
|
}
|
}
|
|
},
|
/**
|
* @description 由于改了单位, 重新计算坐标
|
*/
|
CalcOptimalByUnitQ(origin_unit_q, target_unit_q, coordinate) {
|
if (origin_unit_q == target_unit_q)
|
return;
|
var spaceQ2 = coordinateHelper.GetOptimalSpace(
|
UnitHelper.ConvertQ_fromM3H(target_unit_q, coordinate.SpaceQ)
|
);
|
var min_q = UnitHelper.ConvertQ_fromM3H(
|
target_unit_q,
|
coordinate.DispMinQ
|
);
|
var dispMinQ2 = Math.floor(min_q / spaceQ2) * spaceQ2;
|
var grid_num = 0;
|
for (var i = 1; i < 25; i++) {
|
var q = dispMinQ2 + spaceQ2 * i;
|
var m3h = UnitHelper.ConvertQ_toM3H(target_unit_q, q);
|
grid_num = i;
|
if (m3h > coordinate.DispMaxQ * 1.05) {
|
coordinate.DispMaxQ = m3h;
|
coordinate.DispMinQ = UnitHelper.ConvertQ_toM3H(target_unit_q, dispMinQ2);
|
coordinate.MinQ = coordinate.DispMinQ;
|
coordinate.GridNumberX = grid_num;
|
coordinate.SpaceQ = UnitHelper.ConvertQ_toM3H(target_unit_q, spaceQ2);
|
break;
|
}
|
}
|
// console.log(coordinate)
|
},
|
/**
|
* @description 由于改了单位, 重新计算坐标
|
*/
|
CalcOptimalByUnitH(origin_unit_h, target_unit_h, coordinate) {
|
if (origin_unit_h == target_unit_h)
|
return;
|
var spaceH2 = coordinateHelper.GetOptimalSpace(
|
UnitHelper.ConvertH_fromM(target_unit_h, coordinate.SpaceH * 1.1)
|
);
|
var min_h = UnitHelper.ConvertH_fromM(
|
target_unit_h,
|
coordinate.DispMinH
|
);
|
var max_h2_u = UnitHelper.ConvertH_fromM(
|
target_unit_h,
|
coordinate.MinH + coordinate.SpaceH * coordinate.EndLineNoH
|
);
|
// console.log(coordinate.MinH + coordinate.SpaceH * coordinate.EndLineNoH,
|
// UnitHelper.ConvertH_fromM (
|
// target_unit_h,
|
// 220
|
// ));
|
var dispMaxH2 = Math.floor(max_h2_u / spaceH2) * spaceH2 + spaceH2;
|
|
var grid_num = 0;
|
for (var i = 0; i <= coordinate.EndLineNoH; i++) {
|
var m = UnitHelper.ConvertH_toM(target_unit_h, dispMaxH2 - spaceH2 * i);
|
grid_num++;
|
//console.log(m,coordinate.DispMinH)
|
if (m > coordinate.DispMinH || grid_num < 3) {
|
continue;
|
}
|
else {
|
break;
|
}
|
}
|
|
coordinate.SpaceH = UnitHelper.ConvertH_toM(target_unit_h, spaceH2);
|
coordinate.DispMaxH = UnitHelper.ConvertH_toM(target_unit_h, dispMaxH2);
|
coordinate.MinH = UnitHelper.ConvertH_toM(target_unit_h, dispMaxH2 - coordinate.EndLineNoH * spaceH2);
|
coordinate.StartLineNoH = coordinate.EndLineNoH - grid_num;
|
coordinate.DispMinH = coordinate.MinH + coordinate.StartLineNoH * coordinate.SpaceH;
|
|
//console.log(coordinate);
|
},
|
/**
|
* @description 由于改了单位, 重新计算坐标
|
*/
|
CalcOptimalByUnitP(origin_unit_p, target_unit_p, coordinate) {
|
if (origin_unit_p == target_unit_p)
|
return;
|
var spaceP2 = coordinateHelper.GetOptimalSpace(
|
UnitHelper.ConvertP_fromKW(target_unit_p, coordinate.SpaceP * 1.1)
|
);
|
var min_p = UnitHelper.ConvertP_fromKW(
|
target_unit_p,
|
coordinate.DispMinP
|
);
|
var max_p2_u = UnitHelper.ConvertP_fromKW(
|
target_unit_p,
|
coordinate.MinP + coordinate.SpaceP * coordinate.EndLineNoP
|
);
|
// console.log(coordinate.MinH + coordinate.SpaceH * coordinate.EndLineNoH,
|
// UnitHelper.ConvertH_fromM (
|
// target_unit_h,
|
// 220
|
// ));
|
var dispMaxP2 = Math.floor(max_p2_u / spaceP2) * spaceP2 + spaceP2;
|
|
var grid_num = 0;
|
for (var i = 0; i <= coordinate.EndLineNoP; i++) {
|
var m = UnitHelper.ConvertP_toKW(target_unit_p, dispMaxP2 - spaceP2 * i);
|
grid_num++;
|
//console.log(m,coordinate.DispMinH)
|
if (m > coordinate.DispMinP || grid_num < 2) {
|
continue;
|
}
|
else {
|
break;
|
}
|
}
|
|
coordinate.SpaceP = UnitHelper.ConvertP_toKW(target_unit_p, spaceP2);
|
coordinate.DispMaxP = UnitHelper.ConvertP_toKW(target_unit_p, dispMaxP2);
|
coordinate.MinP = UnitHelper.ConvertP_toKW(target_unit_p, dispMaxP2 - coordinate.EndLineNoP * spaceP2);
|
coordinate.StartLineNoP = coordinate.EndLineNoP - grid_num;
|
coordinate.DispMinP = coordinate.MinP + coordinate.StartLineNoP * coordinate.SpaceP;
|
|
//console.log(coordinate);
|
},
|
|
/**
|
* @description 由于改了单位, 重新计算坐标
|
*/
|
CalcOptimalByUnitNPSH(origin_unit_npsh, target_unit_npsh, coordinate) {
|
if (origin_unit_npsh == target_unit_npsh)
|
return;
|
var spaceNPSH1 = UnitHelper.ConvertH_fromM(
|
target_unit_npsh, coordinate.SpaceNPSH * 1.1
|
);
|
var spaceNPSH2 = coordinateHelper.GetOptimalSpace(spaceNPSH1);//Ft 单位
|
var dispMaxNPSH2 = UnitHelper.ConvertH_fromM(target_unit_npsh, coordinate.MinNPSH + (coordinate.EndLineNoNPSH - coordinate.StartLineNoNPSH) * coordinate.SpaceNPSH);//Ft 单位
|
var grid_num = 0;
|
for (var i = 0; i <= 10; i++) {
|
if (spaceNPSH2 * i < dispMaxNPSH2 ) {
|
grid_num++;
|
continue;
|
}
|
else{
|
break;
|
}
|
}
|
|
coordinate.SpaceNPSH = UnitHelper.ConvertH_toM(target_unit_npsh, spaceNPSH2);
|
coordinate.DispMinNPSH = 0;
|
coordinate.DispMaxNPSH = UnitHelper.ConvertH_toM(target_unit_npsh, grid_num * spaceNPSH2);
|
coordinate.MinNPSH = 0;
|
coordinate.MaxNPSH = UnitHelper.ConvertH_toM(target_unit_npsh, grid_num * spaceNPSH2);
|
coordinate.StartLineNoNPSH = 0;
|
coordinate.EndLineNoNPSH = grid_num;
|
|
// console.log(coordinate,spaceNPSH2,spaceNPSH2,grid_num);
|
}
|
}
|
|
export default coordinateHelper
|