Arvaillaanko mitä tekee vai kerrotko?Arska wrote:Cpl Honkonen wrote:
Meitsi tehny tän päivän itelle excel mortar kalkulaattotria. Vähän kun osais vielä viimeistellä niin toi olis priima.
Laskee metrin tarkoilla koordinaateilla koordinaattierot, etäisyys, korkeusero, kaikille kolmelle panokselle arvot ja spläs ajat 25m hajautuksen ja east/west suunnat.Code: Select all
''' Created on 22.8.2015 @author: Arska ''' import math import sys import tkinter class mortarApp(tkinter.Tk): def __init__(self, parent): tkinter.Tk.__init__(self, parent) self.parent = parent self.initialize() def initialize(self): self.grid() self.ownPos = tkinter.StringVar() self.ownHeight = tkinter.StringVar() self.targetPos = tkinter.StringVar() self.targetHeight = tkinter.StringVar() self.korjaus_dir = tkinter.StringVar() self.korjaus_dir.set("None") #DEFAULT self.korjaus_dist = tkinter.StringVar() self.korjaus_dist.set("0") #DEFAULT self.type = tkinter.StringVar() self.type.set("KOHDISTUS") #DEFAULT self.type_dir = tkinter.StringVar() self.type_dir.set("N") #DEFAULT self.peite_dist = tkinter.StringVar() self.peite_dist.set("300") self.ownPoslabel = tkinter.Label(self, text="Own position grid") self.ownPoslabel.grid(column=0, row=0, sticky='NSWE') self.ownPosEntry = tkinter.Entry(self, textvariable=self.ownPos) self.ownPosEntry.grid(column=1, row=0, sticky='NSWE') self.ownPosheightlabel = tkinter.Label(self, text="Own position ASL") self.ownPosheightlabel.grid(column=2, row=0, sticky='NSWE') self.ownHeightEntry = tkinter.Entry(self, textvariable=self.ownHeight) self.ownHeightEntry.grid(column=3, row=0, sticky='NSWE') self.targetPoslabel = tkinter.Label(self, text="Target position grid") self.targetPoslabel.grid(column=0, row=1, sticky='NSWE') self.targetPosEntry = tkinter.Entry(self, textvariable=self.targetPos) self.targetPosEntry.grid(column=1, row=1, sticky='NSWE') self.targetPosheightlabel = tkinter.Label(self, text="Target position ASL") self.targetPosheightlabel.grid(column=2, row=1, sticky='NSWE') self.targetHeightEntry = tkinter.Entry(self, textvariable=self.targetHeight) self.targetHeightEntry.grid(column=3, row=1, sticky='NSWE') #KORJAUS ISKUIHIN self.korjauslabel = tkinter.Label(self, text="Korjaus") self.korjauslabel.grid(column=0, row=2, sticky='NSWE') self.korjausMenu = tkinter.OptionMenu(self, self.korjaus_dir, "None","N","NE","E","SE","S","SW","W","NW") self.korjausMenu.grid(column=1, row=2) self.korjausEntry = tkinter.Entry(self, textvariable=self.korjaus_dist) self.korjausEntry.grid(column=2, row=2, sticky='NSWE') #Type of attack self.typeLabel = tkinter.Label(self, text="Tulikomento") self.typeLabel.grid(column=0, row=3) self.typeMenu = tkinter.OptionMenu(self, self.type, "ISKU","PEITE","KOHDISTUS") self.typeMenu.grid(column=1, row=3) self.typeDirMenu = tkinter.OptionMenu(self, self.type_dir, "N","NE","E","SE","S","SW","W","NW") self.typeDirMenu.grid(column=2, row=3) self.typeEntry = tkinter.Entry(self, textvariable=self.peite_dist) self.typeEntry.grid(column=3, row=3, sticky='NSWE') self.calculate = tkinter.Button(self, text= "Calculate!", command=self.doTheMath) self.calculate.grid(column=0,columnspan=4, row=4, sticky='NSWE') self.quitButton = tkinter.Button(self, text="QUIT", command=sys.exit) self.quitButton.grid(column=3, row=10, sticky='NSWE') self.labelDir = tkinter.StringVar() self.labelVert0 = tkinter.StringVar() self.labelVert1 = tkinter.StringVar() self.labelVert2 = tkinter.StringVar() self.labelDist = tkinter.StringVar() self.labelTime0 = tkinter.StringVar() self.labelTime1 = tkinter.StringVar() self.labelTime2 = tkinter.StringVar() self.Dirlabel = tkinter.Label(self, text="Direction:") self.Dirlabel.grid(column=0, row=5, sticky='NSWE') self.DirlabelVal = tkinter.Label(self, textvariable=self.labelDir) self.DirlabelVal.grid(column=1, row=5, sticky='NSWE') self.Distlabel = tkinter.Label(self, text="Distance:") self.Distlabel.grid(column=0, row=6, sticky='NSWE') self.DistlabelVal = tkinter.Label(self, textvariable=self.labelDist) self.DistlabelVal.grid(column=1, row=6, sticky='NSWE') self.chargelabel = tkinter.Label(self, text="Charge:") self.chargelabel.grid(column=0, row=7, sticky='NSWE') self.charge0label = tkinter.Label(self, text="0") self.charge0label.grid(column=1, row=7, sticky='NSWE') self.charge1labe2 = tkinter.Label(self, text="1") self.charge1labe2.grid(column=2, row=7, sticky='NSWE') self.charge2label = tkinter.Label(self, text="2") self.charge2label.grid(column=3, row=7, sticky='NSWE') self.chargeElevlabel = tkinter.Label(self, text="Elevation:") self.chargeElevlabel.grid(column=0, row=8, sticky='NSWE') self.charge0elev = tkinter.Label(self, textvariable=self.labelVert0) self.charge0elev.grid(column=1, row=8, sticky='NSWE') self.charge1elev = tkinter.Label(self, textvariable=self.labelVert1) self.charge1elev.grid(column=2, row=8, sticky='NSWE') self.charge2elev = tkinter.Label(self, textvariable=self.labelVert2) self.charge2elev.grid(column=3, row=8, sticky='NSWE') self.chargeElevlabel = tkinter.Label(self, text="Flight time:") self.chargeElevlabel.grid(column=0, row=9, sticky='NSWE') self.charge0elev = tkinter.Label(self, textvariable=self.labelTime0) self.charge0elev.grid(column=1, row=9, sticky='NSWE') self.charge1elev = tkinter.Label(self, textvariable=self.labelTime1) self.charge1elev.grid(column=2, row=9, sticky='NSWE') self.charge2elev = tkinter.Label(self, textvariable=self.labelTime2) self.charge2elev.grid(column=3, row=9, sticky='NSWE') self.resizable(False,False) self.ownPosEntry.focus() self.ownHeightEntry.focus() self.targetPosEntry.focus() self.targetHeightEntry.focus() self.korjausEntry.focus() self.bind('<Return>', self.calculate) #DEBUG #self.ownPos.set("00000010") #self.ownHeight.set("0") #self.targetPos.set("00000020") #self.targetHeight.set("0") def doTheMath(self): mort_x, mort_y, target_x, target_y = parse_grid(self.ownPos.get(), self.targetPos.get()) if (self.korjaus_dir.get() != "None" and (self.korjaus_dist.get() != "0" or self.korjaus_dist.get() != "")): if (self.korjaus_dir.get() == "N"): target_y += int(self.korjaus_dist.get())/10 if (self.korjaus_dir.get() == "NE"): target_x += int(self.korjaus_dist.get())/10*math.sqrt(2) target_y += int(self.korjaus_dist.get())/10*math.sqrt(2) if (self.korjaus_dir.get() == "E"): target_x += int(self.korjaus_dist.get())/10 if (self.korjaus_dir.get() == "SE"): target_x += int(self.korjaus_dist.get())/10*math.sqrt(2) target_y -= int(self.korjaus_dist.get())/10*math.sqrt(2) if (self.korjaus_dir.get() == "S"): target_y -= int(self.korjaus_dist.get())/10 if (self.korjaus_dir.get() == "SW"): target_x -= int(self.korjaus_dist.get())/10*math.sqrt(2) target_y -= int(self.korjaus_dist.get())/10*math.sqrt(2) if (self.korjaus_dir.get() == "W"): target_x -= int(self.korjaus_dist.get())/10 if (self.korjaus_dir.get() == "NW"): target_x -= int(self.korjaus_dist.get())/10*math.sqrt(2) target_y += int(self.korjaus_dist.get())/10*math.sqrt(2) dist,angle = calc_dist_angle(mort_x, mort_y, target_x, target_y) h_diff = int(self.targetHeight.get()) - int(self.ownHeight.get()) vert_0 = calc_vert_angle(dist, h_diff, VC) vert_1 = calc_vert_angle(dist, h_diff, VM) vert_2 = calc_vert_angle(dist, h_diff, VF) if (vert_0 == '****'): T_0 = '****' else: T_0 = calc_flight_time(VC, dist, vert_0) if (vert_1 == '****'): T_1 = '****' else: T_1 = calc_flight_time(VM, dist, vert_1) if (vert_2 == '****'): T_2 = '****' else: T_2 = calc_flight_time(VF, dist, vert_2) self.labelTime0.set(T_0) self.labelTime1.set(T_1) self.labelTime2.set(T_2) if(self.type.get() == "ISKU"): distNW,angleNW = calc_dist_angle(mort_x, mort_y, target_x-5, target_y+5) distSE,angleSE = calc_dist_angle(mort_x, mort_y, target_x+5, target_y-5) self.labelDir.set("{:04.0f} - {:04.0f}".format(angleNW, angleSE)) self.labelVert0.set("{} - {}".format(calc_vert_angle(distNW, h_diff, VC), calc_vert_angle(distSE, h_diff, VC))) self.labelVert1.set("{} - {}".format(calc_vert_angle(distNW, h_diff, VM), calc_vert_angle(distSE, h_diff, VM))) self.labelVert2.set("{} - {}".format(calc_vert_angle(distNW, h_diff, VF), calc_vert_angle(distSE, h_diff, VF))) elif(self.type.get() == "PEITE" and self.type_dir.get() != ""): R_mort_x = mort_x R_mort_y = mort_y R_target_x = target_x R_target_y = target_y if (self.type_dir.get() == "N"): R_target_y += int(self.peite_dist.get())/10 if (self.type_dir.get() == "NE"): R_target_x += int(self.peite_dist.get())/10*math.sqrt(2) R_target_y += int(self.peite_dist.get())/10*math.sqrt(2) if (self.type_dir.get() == "E"): R_target_x += int(self.peite_dist.get())/10 if (self.type_dir.get() == "SE"): R_target_x += int(self.peite_dist.get())/10*math.sqrt(2) R_target_y -= int(self.peite_dist.get())/10*math.sqrt(2) if (self.type_dir.get() == "S"): R_target_y -= int(self.peite_dist.get())/10 if (self.type_dir.get() == "SW"): R_target_x -= int(self.peite_dist.get())/10*math.sqrt(2) R_target_y -= int(self.peite_dist.get())/10*math.sqrt(2) if (self.type_dir.get() == "W"): R_target_x -= int(self.peite_dist.get())/10 if (self.type_dir.get() == "NW"): R_target_x -= int(self.peite_dist.get())/10*math.sqrt(2) R_target_y += int(self.peite_dist.get())/10*math.sqrt(2) distR,angleR = calc_dist_angle(R_mort_x, R_mort_y, R_target_x, R_target_y) self.labelDir.set("{:04.0f} - {:04.0f}".format(angle, angleR)) self.labelVert0.set("{} - {}".format(vert_0, calc_vert_angle(distR, h_diff, VC))) self.labelVert1.set("{} - {}".format(vert_1, calc_vert_angle(distR, h_diff, VM))) self.labelVert2.set("{} - {}".format(vert_0, calc_vert_angle(distR, h_diff, VF))) else: self.labelDir.set("{:04.0f}".format(angle)) self.labelVert0.set(vert_0) self.labelVert1.set(vert_1) self.labelVert2.set(vert_2) self.labelDist.set("{:.0f} m".format(dist)) VC = 70 #speed close charge0 VM = 140 #speed medium charge1 VF = 200 #speed far charge2 G = 9.81 #gravity def parse_grid (mort_pos,targ_pos): x_m = int(mort_pos[:4]) y_m = int(mort_pos[4:]) x_t = int(targ_pos[:4]) y_t = int(targ_pos[4:]) return x_m, y_m, x_t, y_t def calc_dist_angle(x_m,y_m,x_t,y_t): d_x = (x_m - x_t)*10 d_y = (y_m-y_t)*10 angle = calc_hor_angle(d_x, d_y) dist = math.sqrt((d_x)**2 + (d_y)**2) return dist, angle def calc_hor_angle(x, y): return math.degrees((math.atan2(x, y))*17.777777)+3200 def calc_vert_angle(dist, y, v): v_angle = '****' Discriminant = v**4 - G*(G*dist**2+2*y*v**2) if (Discriminant > 0): # tarkistetaan sqrt(neg.) varalta, esim jos kohde liian kaukana sol1 = math.degrees(math.atan((v**2 + math.sqrt(Discriminant)) / (G*dist) ))*17.777777 sol2 = math.degrees(math.atan((v**2 - math.sqrt(Discriminant)) / (G*dist) ))*17.777777 if (sol1 < 1570 and sol1 > 800): v_angle = "{:04.0f}".format(sol1) elif (sol2 < 1570 and sol2 > 800): v_angle = "{:04.0f}".format(sol2) return v_angle def calc_flight_time(v,dist,a): return "{:.1f} s".format(dist/(v*math.cos(math.radians(float(a)/17.777777)))) def main(): app = mortarApp(None) app.title('Mortar calculator') app.mainloop() main()
Kuvankaappausketju
-
- Posts: 340
- Joined: 29 Jul 2013, 00:09
- Location: Keskimmäinen sormi
Re: Kuvankaappausketju
“If you don’t have enough artillery, quit.”
– General Richard Cavasos
"Kylmä, nälkä ja väsymys ovat siviilin harhaluuloja, sotilas tuntee puutetta ainoastaan ampumatarvikkeista."
– General Richard Cavasos
"Kylmä, nälkä ja väsymys ovat siviilin harhaluuloja, sotilas tuntee puutetta ainoastaan ampumatarvikkeista."
Re: Kuvankaappausketju
Lataa python ja tallenna toi Arskan skripti .py tiedostopäätteellä. Tämän jälkeen se pitäisi pystyä käynnistämään tuplaklikkaamalla.IsaiahCortez wrote: Arvaillaanko mitä tekee vai kerrotko?
Näyttää tältä:
Semper ubi sub ubi
- Tuntematon
- Posts: 2291
- Joined: 19 May 2015, 15:29
- Location: Valkeakoski
- Contact:
Re: Kuvankaappausketju
Noni jätetääs tää ketju nyt rauhaan kaikelta ylimääräiseltä roskalta ja laitetaan vaan hienoja arma peli kuvia
- Cpl Honkonen
- Posts: 657
- Joined: 01 Aug 2015, 14:39
- Location: Iisalmi
Re: Kuvankaappausketju
On mulla tuo arskan jutska ollu jo miljoona aikaa kun joku jako se njoskus tessussa. Mutta en mää hiffannu miten sitä käytetään koska ei ollu käyttöohjetta
Combat Camera
Jos meitsi sanoo jotain siitä ei saa selvää ja jos siitä sais selvää kannattaa olla vähän pelisilmää sen selvän suhteen
Jos meitsi sanoo jotain siitä ei saa selvää ja jos siitä sais selvää kannattaa olla vähän pelisilmää sen selvän suhteen
Re: Kuvankaappausketju
Miksi tätä viestiä ei pysty lukemaan. Ärsyttävää.Cpl Honkonen wrote:On mulla tuo arskan jutska ollu jo miljoona aikaa kun joku jako se njoskus tessussa. Mutta en mää hiffannu miten sitä käytetään koska ei ollu käyttöohjetta
Jotta ei mene OT:ksi: keskiverto Arman pelaajia edustamassa hoodeilla
Furean wrote:Pitää muistaa, että ruotsalaisethan pani melkein koko Suomen kansaa.
ruoste wrote:Dataa on saatava.
Re: Kuvankaappausketju
Vaihteeksi taas kuvia:
Suoraviivaista toimintaa Irakissa. Toivottavasti oli shiiamoskeija, jos hyökkääjät oli sunneja - tai toisinpäin. Muuten mullah on vihainen.
Suoraviivaista toimintaa Irakissa. Toivottavasti oli shiiamoskeija, jos hyökkääjät oli sunneja - tai toisinpäin. Muuten mullah on vihainen.
Re: Kuvankaappausketju
Lääkintätarvikkeita ainakin kului (ja sinkoja).
-
- Posts: 63
- Joined: 02 Jan 2016, 11:55
- Location: Helsinki
- Contact:
Re: Kuvankaappausketju
14.5. Viikkospeels
Re: Kuvankaappausketju
Sain vihdoin aikaiseksi pistää kuvia jakoon. Kansiossa kuvia noin puolen vuoden ajalta, sekä virallisista että epävirallisista.
http://imgur.com/a/Xkz8L
http://imgur.com/a/Xkz8L