我有一公里多,我將它分成兩百米在它的正面和反面..這是最有效的方法嗎?
__________y__________
| | |
| | |
| | |
|---------|---------| x
| | |
| | |
|_________|_________|
基本上我正在做一個正方形就像上面的一個。我在x軸的正方向和負方向上將它分成100米的正方形。然後我繪製每個點在他們各自的合作伙伴中,我打算通過一堆if/else語句(至少50,最多100)拋出一個(x,y)值,但我關心的是如何這將是昂貴的。有沒有更有效的方式來做我想做的事情?
這裏是我計劃如何做一個例子...
if(tlat < lat && tlat > lat - 89930.7){
//point is within 100 meters on lat
//On the NEGATIVE SIDE.
if(tlng > lng && tlng < lng + 147999.8){
//point is within 100 meters on lat NEGATIVE &&
//withing 100 meters on lng POSITIVE
layers.addcube(highlng100p, lowlng100p, yhigh, ylow, highlat100p, lowlat100p);
highlng100p = highlng100p + 5;
lowlng100p = lowlng100p + 5;
highlat100p = highlat100p + 5;
lowlat100p = lowlat100p + 5;
}else if(tlng < lng && tlng > lng - 147999.8){
//point is within 100 meters on lat NEGATIVE &&
//withing 100 meters on lng NEGATIVE
layers.addcube(highlat100n, lowlat100n, yhigh, ylow, highlng100n, lowlng100n);
highlat100n = highlat100n + 5;
lowlat100n = lowlat100n + 5;
highlng100n = highlng100n + 5;
lowlat100n = lowlat100n + 5;
}else if(tlng > lng && tlng < lng + 295999.6){
//point is within 200 meters on lat NEGATIVE &&
//withing 200 meters on lng POSITIVE
layers.addcube(highlat200n, lowlat200n, yhigh, ylow, highlng200p, lowlng200n);
highlat200n = highlat200n + 5;
lowlat200n = lowlat200n + 5;
highlng200p = highlng200p + 5;
lowlng200p = lowlng200p + 5;
}else if(tlng < lng && tlng > lng - 295999.6){
//point is within 200 meters on lat NEGATIVE &&
//withing 200 meters on lng NEGATIVE
layers.addcube(highlat200n, lowlat200n, yhigh, ylow, highlng200n, lowlng200n);
highlat200n = highlat200n + 5;
lowlat200n = lowlat200n + 5;
highlng200n = highlng200n + 5;
lowlng200n = lowlng200n + 5;
}else if(tlng > lng && tlng < lng + 443999.4){
//point is within 300 meters on lat NEGATIVE &&
//withing 300 meters on lng POSITIVE
layers.addcube(highlat300n, lowlat300n, yhigh, ylow, highlng300p, lowlng300p);
highlat300n = highlat300n + 5;
lowlat300n = lowlat300n + 5;
highlng300p = highlng300p + 5;
lowlng300p = lowlng300p + 5;
}else if(tlng < lng && tlng > lng - 443999.4){
//point is within 300 meters on lat NEGATIVE &&
//withing 300 meters on lng NEGATIVE
layers.addcube(highlat300n, lowlat300n, yhigh, ylow, highlng300n, lowlng300n);
highlat300n = highlat300n + 5;
lowlat300n = lowlat300n + 5;
highlng300n = highlng300n + 5;
lowlng300n = lowlng300n + 5;
} else if(tlng > lng && tlng < lng + 591999.2){
//point is within 400 meters on lng
//on the POSITIVE SIDE
layers.addcube(highlat400n, lowlat400n, yhigh, ylow, highlng400p, lowlng400p);
highlat400n = highlat400n + 5;
lowlat400n = lowlat400n + 5;
highlng400p = highlng400p + 5;
lowlng400p = lowlng400p + 5;
}else if(tlng < lng && tlng > lng - 591999.2){
//point is within 400 meters on lng
//on the NEGATIVE SIDE
layers.addcube(highlat400n, lowlat400n, yhigh, ylow, highlng400n, lowlng400n);
highlat400n = highlat400n + 5;
lowlat400n = lowlat400n + 5;
highlng400n = highlng400n + 5;
lowlng400n = lowlng400n + 5;
}else if(tlng > lng && tlng < lng + 739999){
//point is within 500 meters on lng
//on the POSITIVE SIDE
layers.addcube(highlat500n, lowlat500n, yhigh, ylow, highlng500p, lowlng500p);
highlat500n = highlat500n + 5;
lowlat500n = lowlat500n + 5;
highlng500p = highlng500p + 5;
lowlng500p = lowlng500p + 5;
}else if(tlng < lng && tlng > lng - 739999){
//point is within 500 meters on lng
//on the NEGATIVE SIDE
layers.addcube(highlat500n, lowlat500n, yhigh, ylow, highlng500n, lowlng500n);
highlat500n = highlat500n + 5;
lowlat500n = lowlat500n + 5;
highlng500n = highlng500n + 5;
lowlng500n = lowlng500n + 5;
}
}
如果有人可以幫助我做什麼,我想要做的更有效的我會感激! 謝謝,
我建議你不要擔心效率問題,並開始擔心「不要重複自己」。 – Stephen 2010-07-10 13:32:20
你能澄清你想要做什麼嗎?我不明白你的意思是什麼「然後我將每個點繪製在各自的共同點上」 – SpoonMeiser 2010-07-10 13:34:11
你不能直接計算,將x和y數字縮放到網格並使用「floor」來使他們成爲一體?我錯過了什麼嗎? – 2010-07-10 22:46:12