Få fram center position (lng, lat) utifrån fyra hörn

Permalänk
Medlem

Få fram center position (lng, lat) utifrån fyra hörn

Finns det något mattesnille här? Jag skulle vilja bygga ett PHP-skript som "räknar" ut center-koordinaterna (lng, lat) av en rektangel utifrån rektangelns fyra hörn. Varje hörn har sina egna lng, lat. Ska försöka beskriva med lite skön ASCII..

lng: 48.53953177675038 .............. lng: 48.53953177675038
lat: 4.760689719826615 ................ lat: 5.594223112194982
..............................................................................................
............................................... ? ...........................................
..............................................................................................
..............................................................................................
lng: 48.145706931790585 ........... lng: 48.145706931790585
lat: 4.760689719826615 ................. lat: 5.594223112194982

Uppskattar all hjälp på traven!

Permalänk
Rekordmedlem

Principen borde bli att räkna fram skillnaden mellan koordinaterna i varje ledd, halvera skillnadsvärdet och addera det till det till värdet i "lägsta hörnet"
Du kan också behöva hantera nollgenomgång om det ska bli "på riktigt" eftersom det bara finns 360 grader, tex blir 370 till 10 pga nollgenomgången.

Visa signatur

R5 5600G, Asus ROG STRIX X470-F Gaming, WD SN850X 2TB, Seasonic Focus+ Gold 650W, Aerocool Graphite v3, Tittar på en Acer ET430Kbmiippx 43" 4K. Lyssnar på Behringer DCX2496, Truth B3031A, Truth B2092A. Har också oscilloskop, mätmikrofon och colorimeter.

Permalänk
Medlem

Simplaste är ju att bara ta och addera alla lng/lat värden var för sig och dela på 4.

Iom att alla värden är duplicerade mellan två hörn så behöver du ju dock egentligen bara två par. T.ex. om hörnen är:
a-b
|X|
c-d

X.lng = (A.lng + C.lng) / 2
X.lat = (A.lat + B.lat) / 2

Edit:
Exemplet är baserat på dina koordinater, som är vända 90*. Longituden borde egentligen vara a och b, och latituden a och c, om a och b är de nordliga punkterna.

Visa signatur

Redbox: Asrock B650 Lightning ATX, 7800x3D -20CCO, XFX 6950XT, 2x32GB Corsair Vengence 6400 CL32, WD SN770 2TB, Corsair RMe 1000, Lian Li Lancool 216, Peerless Assassin 120 SE
Purpbox: Z87-Pro, I5 4670K@4.2, Sapphire 290 TRI-X, 2x8GB Crucial Tactical@stock, Deep Silence 1
Samsung Evo 250+500GB + QVO 1TB, 2x1TB 7200RPM backup/lagring
Det var bättre förr: E5300 2600MHz -> 3640MHz, Celeron 300A -> 450MHz

Permalänk
Inaktiv

lng: 48.53953177675038 .............. lng: 48.53953177675038
lat: 4.760689719826615 ................ lat: 5.594223112194982
..............................................................................................
............................................... ? ...........................................
..............................................................................................
..............................................................................................
lng: 48.145706931790585 ........... lng: 48.145706931790585
lat: 4.760689719826615 ................. lat: 5.594223112194982

Ifall det är en rektangel vi pratar om och inte paralellogram så kan hälften av informationen ignoreras.

Centrum är exakt mellan värdena (lng: 48.53953177675038 och lng: 48.145706931790585 samt lat: 4.760689719826615 och lat: 5.594223112194982)och kan räknas ut som föreslås ovan

Permalänk
Medlem

Om det är en box är det inte bara att ta:

lat_cen=lat_min+(lat_max-lat_min)
long_cen= long_min+(long_max-long_min)

alt:
lat_cen=(lat_max+lat_min)/2
long_cen=(long_max+long_min)/2
???

edit:
Såg att någon redan svarat med samma lösning...

Visa signatur

Chassi;Mobo;RAM: NZXT H7 Flow, Asus Crosshair Hero x670E;Ryzen 7 7700X
RAM;PSU: G.Skill TridentZ 64 GB DDR5 6000MHz;BQ Dark Power 13 1000W
Kylare: Corsair AIO 360 med RGB...
GPU: MSI RTX 4090 Suprim X

Permalänk
Medlem

Suveränt. Lyckades ordna detta med e1m1's och er andras hjälp. Betryggande att det finns skarpa hjärnor nära till hands! Tack.