Keresés

Részletes keresés

egy hazafi Creative Commons License 2021.06.15 0 0 680

Na, ezzel a kódrészlettel nagyjából sikerült a megfelelő helyre pozicionálnom a lövedékeket:

 

l.rotation_degrees=robotkar.rotation_degrees-180

l.position=robotkar.position+Vector2(cos(deg2rad(l.rotation_degrees)),sin(deg2rad(l.rotation_degrees)))*robotkarkep.texture.get_size().x

 

Köszönöm a segítségeiteket; úgy látszik, a megfelelő átváltó függvényt (deg2rad) kellett a megfelelő értékhez (l.rotation_degrees) írni. Csak annyira bekavar nekem, hogy mi van szögben, mi fokban és hová mi kell.

Előzmény: kisspetya (678)
egy hazafi Creative Commons License 2021.06.15 0 0 679

Köszönöm Nils és Petya, de ezeket ha jól emlékszem, már kipróbáltam. Bár lehet, az bonyolítja nálam a helyzetet, hogy a robotkar XY koordinátája el van tolva a sprite jobb szélére balról, tehát 0-tól eltérő offset értéke van (negatív számok)?

kisspetya Creative Commons License 2021.06.14 0 1 678

Nem használtam még ezt a GDscript-et, de biztos, hogy nem kell ennyire explicit módon mindent kiszámolnod. Ki kell használni a nyelv adottságait.

 

Ezt találtam:
var position = point + Vector2(cos(angle), sin(angle)) * distance

 

Ez Vector2-ben visszaadja a point ponttól angle (radián!) szögben és distance távolságban lévő pontot.

Előzmény: egy hazafi (676)
Nils H Creative Commons License 2021.06.14 0 0 677

r = kar.size.x + fegyver.size.x
löv.pos.x = kar.pos.x + r*cos(kar.rot_rad)
löv.pos.y = kar.pos.y + r*sin(kar.rot_rad)

 

(csak tipp, mivel nem tudni a spritok pivotját stb., és hogy vizuálisan hogyan állnak.)

Előzmény: egy hazafi (676)
egy hazafi Creative Commons License 2021.06.14 0 0 676

Igen, GDscript-ben írtam és olvastam is azt az oldalt.

Most így "oldottam meg" átmenetileg a problémát, de ez nyilván csak félmegoldás, mert kell lennie rá egy egy vagy kétsoros, sokkal egyszerűbb kódnak is:

 

func _process(delta):
if (Input.is_mouse_button_pressed(BUTTON_LEFT) and get_node("../jatekosrobotja/robotkarja/robotfegyvere").lohet==true):
if get_global_mouse_position().x<=position.x+32 and get_global_mouse_position().x>=position.x-32 and get_global_mouse_position().y<=position.y+32 and get_global_mouse_position().y>=position.y-32:
var l=lovedek.instance()
get_parent().add_child(l)
var robotkar=get_node("../jatekosrobotja/robotkarja")
var robotkarkep=get_node("../jatekosrobotja/robotkarja/robotfegyvere")
l.rotation_degrees=robotkar.rotation_degrees-180
#l.position.x=robotkar.position.x-robotkarkep.texture.get_size().x*cos(robotkarkep.robotkarirany)
#l.position.y=robotkar.position.y-robotkarkep.texture.get_size().y*sin(robotkarkep.robotkarirany)
#l.position.x=robotkar.position.x+cos(deg2rad(360-l.rotation_degrees))*robotkarkep.texture.get_size().x
#l.position.y=robotkar.position.y+sin(deg2rad(360-l.rotation_degrees))*robotkarkep.texture.get_size().y
match robotkarkep.robotkarirany:
90:
l.position.x=robotkar.position.x
l.position.y=robotkar.position.y-robotkarkep.texture.get_size().x
135:
l.position.x=robotkar.position.x-robotkarkep.texture.get_size().x+robotkarkep.texture.get_size().y
l.position.y=robotkar.position.y-robotkarkep.texture.get_size().y*2
180:
l.position.x=robotkar.position.x-robotkarkep.texture.get_size().x
l.position.y=robotkar.position.y+robotkarkep.offset.y
225:
l.position.x=robotkar.position.x-robotkarkep.texture.get_size().x+robotkarkep.texture.get_size().y/2
l.position.y=robotkar.position.y+robotkarkep.texture.get_size().y*1.5
270:
l.position.x=robotkar.position.x
l.position.y=robotkar.position.y+robotkarkep.texture.get_size().x
get_node("../TextureRect").lovedektomb.append(l)
robotkarkep.lohet=false
robotkarkep.lovidozito.wait_time=1
robotkarkep.lovidozito.start()

 

Annyit érdemes még tudni, hogy a robotkarkep sprite XY koordinátája nem középen vagy bal oldalon, hanem jobb oldalon van, hogy rendesen a kar tövétől lehessen elforgatni.

Előzmény: kisspetya (674)
Nils H Creative Commons License 2021.06.14 0 0 675

Polárkoordinátákról Descartes-re váltásnál (mint esetedben) igaz mind a négy negyedre. Fordított esetben viszont figyelni kell rá. Lásd alul: https://www.mathsisfun.com/polar-cartesian-coordinates.html

Előzmény: egy hazafi (671)
kisspetya Creative Commons License 2021.06.13 0 0 674

Programkódot linkelj inkább.

Szkriptnyelvben írtad? Ezt elolvastad?

https://docs.godotengine.org/en/stable/tutorials/math/vector_math.html

Előzmény: egy hazafi (673)
egy hazafi Creative Commons License 2021.06.13 0 0 673

Van egy robotkar, amely 90-270 fok között mozoghat, 45 fokos lépésekben. A robotkar hosszúsága adott és persze az, hogy éppen mekkora fokban mozdult el, valamint az XY koordinátája, ami a tövénél van. Ebből kellene kiszámítani a kilőtt lövedék kezdeti koordinátáját, tehát hogy mindig a robotkar által tartott fegyver csövénél jöjjön ki. A fegyver és a robotkar egyetlen grafikus képet alkot, nem külön vannak. Egyébként Godot fejlesztőkörnyezettel készítem a programot.

Előzmény: NevemTeve (672)
NevemTeve Creative Commons License 2021.06.13 0 0 672

Hát, többet tudnék mondani, ha beidéznéd a releváns programrészeket is, meg illusztrálnád a hibajelenséget valahogy (pl. képpel).

Előzmény: egy hazafi (671)
egy hazafi Creative Commons License 2021.06.13 0 0 671

Amúgy ez a képlet mind a négy síknegyedre egyformán igaz? Mert én a II. és III. síknegyedet használom a négyből a programomban.

Előzmény: NevemTeve (669)
egy hazafi Creative Commons License 2021.06.09 0 0 670

Igen, úgy csináltam: Ax és Ay az első objektum koordinátái és ezeket beleírtam a képletbe. De mégsem jó valamiért...

Előzmény: NevemTeve (669)
NevemTeve Creative Commons License 2021.06.09 0 0 669

Legyen (ax,ay) a rögzített középpont, r a rögzített sugár, φ a változó szög:
bx:=ax+r*cosφ

by:=ay+r*sinφ

Előzmény: egy hazafi (668)
egy hazafi Creative Commons License 2021.06.09 0 0 668

Köszönöm; majdnem jó, mert a második objektum most, az utolsó mondatodban megadott képletet alkalmazva önmaga körül forog, és az istennek sem bírom rávenni, hogy ez a forgás egy másik koordináta (az első objektumé) körül legyen.

Előzmény: NevemTeve (667)
NevemTeve Creative Commons License 2021.06.09 0 0 667

> ha ismerünk egy irányt és annak hosszát,
Tegyük fel, hogy vektorra gondolsz, annak van hossza és iránya.

> akkor ezekből meg lehet-e állapítani, hogy egy 2D-s koordináta rendszerben mely XY pozícióra mutat
Ha megadsz egy kezdőpontot, ahonnan induljon a vektorod, akkor igen.

> és ha igen, akkor hogyan, milyen képlet van rá?
mondjuk ha kezdőpont=(ax,ay) és vektor=(vx,vy), akkor végpont=(ax+vx,ay+vy)

Namostan, ha azt akarod mondani, hogy a vektorod hossz=r, szög=φ adatokkal van megadva, akkor vx=r*cosφ, vy=r*sinφ

Előzmény: egy hazafi (666)
egy hazafi Creative Commons License 2021.06.09 0 0 666

Sziasztok!

 

Nem tudom, hogy a következő kérdésem mennyire érdekes számotokra, de remélem, hogy könnyű és meg tudjátok válaszolni. Szóval, mindössze annyi az egész röviden és tömören, hogy ha ismerünk egy irányt és annak hosszát, akkor ezekből meg lehet-e állapítani, hogy egy 2D-s koordináta rendszerben mely XY pozícióra mutat és ha igen, akkor hogyan, milyen képlet van rá?

Ahhoz kellene ez nekem, hogy egy objektumot a programomban mindig egy másiktól adott irányban és távolságban hozzak létre.

a nagy zselatini Creative Commons License 2020.11.27 0 0 665

Sziasztok,

 

abszolút kezdő vagyok, a következőhöz szeretnék tanácsot kérni.

 

Win10-ben szeretnék egy makrót írni. A célja, hogy a következő billentyű szekvenciát egy custom hotkey-jel vagy egyéb egyszerű trigger-rel végrehajtsa, akár végtelenített hurokban (amíg meg nem állítom), akár lépésekben.

 

Adott két ablak, az egyik az Excel, a másik egy másik app. Excel-ből indulok:

 

CTRL+C => ALT+TAB => CTRL+V => ENTER => ALT+TAB => LE

 

Ezt Power Shell-el meg lehet csinálni?

A rengeteg manuális átmásolást szeretném megspórolni.

 

Köszönöm szépen előre is, ha kapok választ! :-)

 

Zs.

pmonitor Creative Commons License 2020.11.10 0 0 664

Az oldalam linkje rosszul jelent meg. A helyes: https://www.bferi.hu/download.php

 

Elnézést.

Előzmény: pmonitor (663)
pmonitor Creative Commons License 2020.11.10 0 0 663

Sziasztok!

 

Igazából a következő helyen szerepel, amit írok, de szerintem ide való(maga a probléma nem Sting-el kapcsolatos-legalábbis csak félig-): https://forum.index.hu/Article/showArticle?t=9105961&la=156388847

 

Az alap probléma a  "Knapsack problem". Ehhez hasonló probléma a "Cutting stock problem" vagyis az "1d vágás optimalizálás problémája".

A "Cutting stock problem" fent van a wikin: https://en.wikipedia.org/wiki/Cutting_stock_problem

Erre készítettem egy programot, ami a következő oldalon van: https://www.bferi.hu/download.php

Ott leírom a probléma lényegét, illetve az én válaszomat a problémára.

 

Ha valaki más aspektusból közelítené meg a problémát, akkor kérem, hogy ne tartsa magában.

Ha valaki megoldotta, akkor tartsa magában és szabadalmaztassa!

 

Üdv.: pmonitor.

Gazer Creative Commons License 2020.05.28 0 0 662

Sziasztok
SDL_net-tel szeretném (C++) megoldani hogy a játék elején az én gépem (szerver) elküldje az megfelelő adatokat a többi játékosnak az ő gépükre és a játék végén vagy közben 1-1 játékostól pedig adatokat kérnék be. Az adatok azok vagy számok lennének 1-20 max vagy karakterek.
Azonban még sose foglalkoztam ilyesmivel. A játékrészt SDL-ben megtudom csinálni. De ezzel a hálózati résszel nem sikerült semmire se jutnom. 
Tudna valaki ebben segíteni? 
Találtam jó pár példa programot de valahogy egyiket se sikerült működésre bírnom.

szjozsi79 Creative Commons License 2013.05.08 0 0 661

Biztos, hogy nincs egyszerűbb megoldás? Mert ez csak próbálkozáson alapul. Még az is lehet, hogy egy végtelen ciklus lesz.

Térszögekkel valahogy ... csak az a baj, hogy a térszögnek alakja is van, nemcsak mérete. :-/

Nincs erre valami egzakt megoldás?

 

 

Előzmény: FASIRT (660)
FASIRT Creative Commons License 2013.05.08 0 0 660

Én a két pontot összekötő húr hosszával számolnék és az erők vektoriális összegének venném az érintősíkon a vetületét. A főkörökön mért távolságnál mind a két ívvel számolni kellene, különben nem jön ki, hogy a két átellenes ponton levő elektronok nem mozdulnak.

Előzmény: szjozsi79 (658)
szjozsi79 Creative Commons License 2013.05.08 0 0 659

Na nézzük csak ... A(200,0,0) és B(0,200,0) és C(0,0,200) pontokon található elektronok hogyan hatnak a X(-115,115,-115) pontban található elektronra akkor, ha az erővonalak a gömbhéjon futnak.

Előzmény: szjozsi79 (658)
szjozsi79 Creative Commons License 2013.05.08 0 0 658

Igazad van, akkor ezeknek az erőknek az eredője adja meg az elmozdulás irányát.

Akkor kiszámolom mindegyik pontra az elmozdulás irányát és abba az irányba mozgatom 1 egységgel, majd amikor odaért, akkor megint kiszámolom és elmozdítom most már az új irányba. Az egészet addig folytatom, amíg a egyes pontokra ható erők eredője eléggé kicsi lesz. Nem túl bonyolult ez? Gömbfelületen futó "egyenesek" eredőjét számolni?

Előzmény: FASIRT (657)
FASIRT Creative Commons License 2013.05.08 0 0 657

Elektronok esetében egy pontra a többi a távolságuk négyzetével fordítottan arányos taszítóerővel hat, és ezek eredőjének az irányába fog elindulni.

Előzmény: szjozsi79 (656)
szjozsi79 Creative Commons License 2013.05.08 0 0 656

Tehát véletlenszerűen elhelyezek pontokat, véletlenszerű mozgást adok nekik és amikor az egymástól való távolságok összege a legnagyobb, akkor megállítom a ciklust. Pontosabban nem is véletlenszerű mozgás kell, hanem olyan mozgás, amivel távolodik a többitől. Tehát minden egyes ponthoz megkeresem azt az irányt, amely irányba egy egységnyi elmozdulással a legnagyobb távolságra kerül a többitől. Talán nem kell 360 féle irányra kiszámolni, lehet hogy elég lesz 24-re (15 fokonként).

 

Nem lehetne esetleg kiteríteni valahogy a gömbfelületet a síkba és arra szétszórni a pontokat? Vagy felosztani szabályos "háromszögekre" a gömbfelületet?

Előzmény: FASIRT (655)
FASIRT Creative Commons License 2013.05.08 0 0 655

gligeti ezt úgy szokta megoldani, hogy elektronokat ragaszt a pontokra, és hagyja őket a gömbfelületen szabadon mozogva stabil helyzetbe beállni.

Előzmény: szjozsi79 (654)
szjozsi79 Creative Commons License 2013.05.07 0 0 654

Érdekes programozási feladat ... így elsőre nekem egy bonyolult geometriai problémának tűnik, de lehet, hogy van rá olyan algoritmus, amivel egyszerűbben megoldható.

Egy gömb felületére kéne meghatározott darab pontot egyenletesen szétszórni.

 

Nem tudom, hogy a teljes teret egy pontból kiindulva hogy lehet egyenlő részekre osztani.

 

FASIRT Creative Commons License 2011.10.05 0 0 653

Pardon, ez egy nagyságrenddel arrébb van.

Az eredeti számot szorozd meg a számjegyei számánál eggyel kisebb számmal, és ennek vágd le a két utolsó számjegyét.

Előzmény: FASIRT (652)
FASIRT Creative Commons License 2011.10.05 0 0 652

Vágd le a szám utolsó számjegyét, az így kapott számot szorozd meg a számjegyeinek a számával, aztán az eredménynek vágd le az utolsó két számjegyét.

Előzmény: szjozsi79 (651)
szjozsi79 Creative Commons License 2011.10.01 0 0 651

Mondjuk azt, hogy a leképezés "határértéke" x*lgx/100 legyen!

Én elakadtam a számjegyek összegénél, ami tetszik ugyan, de nem jó.

Előzmény: NevemTeve (650)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!