Skip to content

Commit 1904d58

Browse files
author
Geniucker
committed
to #4: try to fix
1 parent 7872b41 commit 1904d58

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

route.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"lng":"120.73359794050462","lat":"30.527864525840187"},{"lng":"120.73359794050462","lat":"30.527864525840187"},{"lng":"120.73360692355972","lat":"30.527821752498426"},{"lng":"120.73360692355972","lat":"30.527821752498426"},{"lng":"120.73361141508727","lat":"30.527794533089217"},{"lng":"120.73362488966991","lat":"30.527775090649353"},{"lng":"120.73362488966991","lat":"30.527775090649353"},{"lng":"120.73362938119746","lat":"30.527771202160903"},{"lng":"120.73362938119746","lat":"30.527771202160903"},{"lng":"120.73364285578012","lat":"30.52774787122695"},{"lng":"120.73364285578012","lat":"30.52774787122695"},{"lng":"120.73371472022092","lat":"30.527685655375375"},{"lng":"120.73371472022092","lat":"30.527685655375375"},{"lng":"120.73375514396886","lat":"30.5276545474345"},{"lng":"120.73375514396886","lat":"30.5276545474345"},{"lng":"120.73382700840966","lat":"30.527600108513766"},{"lng":"120.73382700840966","lat":"30.527600108513766"},{"lng":"120.73392582201576","lat":"30.527580666034606"},{"lng":"120.73392582201576","lat":"30.527580666034606"},{"lng":"120.73399768645656","lat":"30.52756122355152"},{"lng":"120.73399768645656","lat":"30.52756122355152"},{"lng":"120.73415039839325","lat":"30.527580666034606"},{"lng":"120.73415039839325","lat":"30.527580666034606"},{"lng":"120.7342447204718","lat":"30.527673989898727"},{"lng":"120.7343884493534","lat":"30.527848971899928"},{"lng":"120.7343884493534","lat":"30.52800451118933"},{"lng":"120.7343884493534","lat":"30.52800451118933"},{"lng":"120.73440192393605","lat":"30.528230042712245"},{"lng":"120.7343615001881","lat":"30.528335031344266"},{"lng":"120.7343704832432","lat":"30.52852945443432"},{"lng":"120.7343704832432","lat":"30.52852945443432"},{"lng":"120.7343884493534","lat":"30.528673327267956"},{"lng":"120.73439294088095","lat":"30.528879415006124"},{"lng":"120.7343165849126","lat":"30.52905828325114"},{"lng":"120.7342447204718","lat":"30.529136051949582"},{"lng":"120.7341638729759","lat":"30.529182713138464"},{"lng":"120.73408302548","lat":"30.52919437843215"},{"lng":"120.73397073729126","lat":"30.529206043724415"},{"lng":"120.73386743215761","lat":"30.529198266863062"},{"lng":"120.73380005924436","lat":"30.529174936275222"},{"lng":"120.73372370327601","lat":"30.529124386648828"},{"lng":"120.73364734730767","lat":"30.52906994855992"},{"lng":"120.73359794050462","lat":"30.529003845124826"},{"lng":"120.73359794050462","lat":"30.528918299435514"},{"lng":"120.73360243203217","lat":"30.528840530561023"},{"lng":"120.73359344897706","lat":"30.528782203863898"},{"lng":"120.73359344897706","lat":"30.528712211780654"},{"lng":"120.73360243203217","lat":"30.528494458307108"},{"lng":"120.73358446592196","lat":"30.528303923613397"},{"lng":"120.73358446592196","lat":"30.528303923613397"},{"lng":"120.73359344897706","lat":"30.528202823418578"},{"lng":"120.73359344897706","lat":"30.528202823418578"},{"lng":"120.73359344897706","lat":"30.52812894243978"},{"lng":"120.73359344897706","lat":"30.52812894243978"},{"lng":"120.73359794050462","lat":"30.528055061404242"},{"lng":"120.73361141508727","lat":"30.528012288147195"}
1+
{"lng":"120.7335575167566","lat":"30.52802386594508"},{"lng":"120.7335664998117","lat":"30.527949984828833"},{"lng":"120.73357997439435","lat":"30.527887769107984"},{"lng":"120.73361590661474","lat":"30.527825553346897"},{"lng":"120.7336653134178","lat":"30.527771114522935"},{"lng":"120.73372370327594","lat":"30.527720564158813"},{"lng":"120.73379107618919","lat":"30.527689456229226"},{"lng":"120.73387641521265","lat":"30.527662236782586"},{"lng":"120.73397073729119","lat":"30.52765057130309"},{"lng":"120.73407404242484","lat":"30.527646682809618"},{"lng":"120.73416387297584","lat":"30.527677790753035"},{"lng":"120.73428514421968","lat":"30.52773611811983"},{"lng":"120.73436150018803","lat":"30.52781388788721"},{"lng":"120.73441539851864","lat":"30.527922765455916"},{"lng":"120.73444234768392","lat":"30.52803941985705"},{"lng":"120.73445133073903","lat":"30.528156074116726"},{"lng":"120.73445582226658","lat":"30.5283038359759"},{"lng":"120.73446031379413","lat":"30.528420489914918"},{"lng":"120.73446031379413","lat":"30.52852158988096"},{"lng":"120.73446480532168","lat":"30.528618801286576"},{"lng":"120.73446480532168","lat":"30.528719901044198"},{"lng":"120.73445582226658","lat":"30.52881322380307"},{"lng":"120.73442887310128","lat":"30.528902658028688"},{"lng":"120.73439294088088","lat":"30.52898820373192"},{"lng":"120.73434353407784","lat":"30.529034864992525"},{"lng":"120.73427616116459","lat":"30.529081526230495"},{"lng":"120.73420429672379","lat":"30.52912429901208"},{"lng":"120.73414590686563","lat":"30.529143741179244"},{"lng":"120.73408302547993","lat":"30.52915929491014"},{"lng":"120.73399319492894","lat":"30.52915540647765"},{"lng":"120.73390785590549","lat":"30.52915540647765"},{"lng":"120.73383599146469","lat":"30.529135964312847"},{"lng":"120.733773110079","lat":"30.529108745275526"},{"lng":"120.73372370327594","lat":"30.529065972487018"},{"lng":"120.73365633036269","lat":"30.529003757487974"},{"lng":"120.73361590661474","lat":"30.528925988682573"},{"lng":"120.7335754828668","lat":"30.528855996703964"},{"lng":"120.7335664998117","lat":"30.528782116226836"},{"lng":"120.7335575167566","lat":"30.528719901044198"},{"lng":"120.7335575167566","lat":"30.52863435510235"},{"lng":"120.7335575167566","lat":"30.528541032169947"},{"lng":"120.7335575167566","lat":"30.528451597608097"},{"lng":"120.7335485337015","lat":"30.528350497568482"},{"lng":"120.73355302522906","lat":"30.528261062829475"},{"lng":"120.7335575167566","lat":"30.52818329342363"},{"lng":"120.73356200828415","lat":"30.528128854802127"}

tools/run.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ def geodistance(p1, p2):
1010
distance=2*asin(sqrt(a))*6371*1000 # 地球平均半径,6371km
1111
return distance
1212

13-
def smooth(start, i, n):
13+
def smooth(start, end, i):
1414
import math
15-
i = (i-start)/n*math.pi
15+
i = (i-start)/(end-start)*math.pi
1616
return math.sin(i)**2
1717

18-
def randLoc(loc: list, d=0.000025, n=7):
18+
def randLoc(loc: list, d=0.000025, n=5):
1919
import random
2020
import time
2121
import math
@@ -34,35 +34,35 @@ def randLoc(loc: list, d=0.000025, n=7):
3434
for i in range(n):
3535
start = int(i*len(result)/n)
3636
end = int((i+1)*len(result)/n)
37+
offset = (2*random.random()-1) * d
3738
for j in range(start, end):
38-
offset = (2*random.random()-1) * d
3939
distance = math.sqrt(
4040
(result[j]["lat"]-center["lat"])**2 + (result[j]["lng"]-center["lng"])**2
4141
)
4242
if 0 == distance:
4343
continue
44-
result[j]["lat"] += (result[j]["lat"]-center["lat"])/distance*offset*smooth(start, j, n)
45-
result[j]["lng"] += (result[j]["lng"]-center["lng"])/distance*offset*smooth(start, j, n)
44+
result[j]["lat"] += (result[j]["lat"]-center["lat"])/distance*offset*smooth(start, end, j)
45+
result[j]["lng"] += (result[j]["lng"]-center["lng"])/distance*offset*smooth(start, end, j)
4646
start = int(i*len(result)/n)
4747
end = len(result)
48+
offset = (2*random.random()-1) * d
4849
for j in range(start, end):
49-
offset = (2*random.random()-1) * d
5050
distance = math.sqrt(
5151
(result[j]["lat"]-center["lat"])**2 + (result[j]["lng"]-center["lng"])**2
5252
)
5353
if 0 == distance:
5454
continue
55-
result[j]["lat"] += (result[j]["lat"]-center["lat"])/distance*offset*smooth(start, j, n)
56-
result[j]["lng"] += (result[j]["lng"]-center["lng"])/distance*offset*smooth(start, j, n)
55+
result[j]["lat"] += (result[j]["lat"]-center["lat"])/distance*offset*smooth(start, end, j)
56+
result[j]["lng"] += (result[j]["lng"]-center["lng"])/distance*offset*smooth(start, end, j)
5757
return result
5858

5959
def fixLockT(loc: list, v, dt):
6060
fixedLoc = []
6161
t = 0
6262
T = []
6363
T.append(geodistance(loc[1],loc[0])/v)
64-
a = loc[0]
65-
b = loc[1]
64+
a = loc[0].copy()
65+
b = loc[1].copy()
6666
j = 0
6767
while t < T[0]:
6868
xa = a["lat"] + j*(b["lat"]-a["lat"])/(max(1, int(T[0]/dt)))
@@ -72,8 +72,8 @@ def fixLockT(loc: list, v, dt):
7272
t += dt
7373
for i in range(1, len(loc)):
7474
T.append(geodistance(loc[(i+1)%len(loc)],loc[i])/v + T[-1])
75-
a = loc[i]
76-
b = loc[(i+1)%len(loc)]
75+
a = loc[i].copy()
76+
b = loc[(i+1)%len(loc)].copy()
7777
j = 0
7878
while t < T[i]:
7979
xa = a["lat"] + j*(b["lat"]-a["lat"])/(max(1, int((T[i]-T[i-1])/dt)))
@@ -86,7 +86,11 @@ def fixLockT(loc: list, v, dt):
8686
def run1(loc: list, v, dt=0.2):
8787
import time
8888
import tools.utils as utils
89+
import random
8990
fixedLoc = fixLockT(loc, v, dt)
91+
nList = (5, 6, 7, 8, 9)
92+
n = nList[random.randint(0, len(nList)-1)]
93+
fixedLoc = randLoc(fixedLoc, n=n) # a path will be divided into n parts for random route
9094
clock = time.time()
9195
for i in fixedLoc:
9296
utils.setLoc(i)
@@ -100,9 +104,6 @@ def run(loc: list, v, d=15):
100104
import time
101105
random.seed(time.time())
102106
while True:
103-
nList = (5, 6, 7)
104-
n = nList[random.randint(0, len(nList)-1)]
105-
newLoc = randLoc(loc, n=n) # a path will be divided into n parts for random route
106107
vRand = 1000/(1000/v-(2*random.random()-1)*d)
107-
run1(newLoc, vRand)
108+
run1(loc, vRand)
108109
print("跑完一圈了")

0 commit comments

Comments
 (0)