3d ympyrä

N kappaletta pisteitä x,y,z koordinaatistossa pitäisi saada sovitettua ympyräksi pienimmän neliösumman menetelmällä?

Eli miten tämän kaavarypäksen
(http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/FISHER/CIRCLEFIT/fit3dcircle/fit3dcircle.html)
saisi tungettua excel-taulukkoon?

Tietenkin jos löytyy valmis ohjelma, niin sepä vasta herkkua olisi..

nimimerkillä: "kaavat ja järkiparka hukassa" ja lisäksi vähemmän matemaattinen ihminen
121137
Äänestä

Muut lukivat myös

Vastaukset 12

Vanhimmat

Ongelma on, että siellä WWW-sivulla kerrotaan vain minimointinongelma mikä pitää ratkaista, mutta ei miten se käytännössä ratkaistaan.

Tuon alkuarvauksen voisit ehkä saada laskettua näin (menetelmä nimeltä PCA = Principal Component Analysis):

1. Laske pisteiden keskiarvo, joka on se c. Sitten vähennä kaikista pisteistä tuo c.

2. Laske pisteiden kovarianssimatriisi

C = sum_i x_i * x_i^T

3. Laske C:n ominaisarvot ja ominaisvektorit, jolloin itseisarvoltaan pienintä ominaisarvoa vastaava ominaisvektori on se ympyrän normaalivektori.

4. Jos x1, x2 ja x3 on ne (normalisoidut) ominaisvektorit ja x3:a vastaa se pienin ominaisarvo, niin silloin se matriisi M on vissiin suurin piirtein

M =
[ x1^T ]
[ x2^T ]
[ 0 0 1 ]

Tuo ei mitenkään välttämättä ole se oikea PNS-ratkaisu mutta ei se varmaan kaukanakaan siitä ole.

Äänestä

seuraavasti:
Ota alkuarvoksi piste (0,0,0).
Laske pisteiden ja alkuarvon etäisyyksien neliösumma.
Aloita alkuarvon säätö esimerkiksi pitkin x-akselia,
minimoi neliösumma ja jatka pitkin y-akselia ja ¨
sen jälkeen ota käsittelyyn z-akseli.
Kierrä riittävän kauan, ja sinulla on ympyrän
keskipiste. jos olet pannut muistiin keskimääräisen
etäisyyden, niin sinulla on ympyrän sädekin tiedossa.

Äänestä

muistelen, että suora sovitettiin 2D-pisteisiin PNS-menetelmällä. Haluttu suora löytyi pseudoinverssillä, joka on eräs matriisin "käänteismatriisi" kun sitä ei oikeasti voida laskea jos se ei ole neliömatriisi.

Tätä voi soveltaa kolmeen ulottuvuuteen aivan hyvin. OK en osaa ulkoa sitä, mutta kyllä siis vastaus pitäisi löytyä matriisilaskennalla, ilman mitään iterointiakin.

Äänestä

Koska ympyrä on kuitenkin tasokuvio, niin yksi tapa tilanteen hoitamiseksi on sovittaa ensin pistejoukkoon taso, jolle kaikki pisteet sitten projisoidaan. Projisoituihin pisteisiin voidaan sitten käyttää ympyrän tasosovitusta.

Nämä voitaisiin varmastikin tehdä myös yhtäaikaisesti, mutta samalla ongelmasta tulisi vaikeampi.

Äänestä

kumpaa halutaan?

osaan kyllä lukea, muuta haluan varmistuksen.

Äänestä
  • Kyseessä on tosiaan ympyrä eikä pallo.
    Koordinaatit ovat x, y ja z.

    " Koska ympyrä on kuitenkin tasokuvio, niin yksi tapa tilanteen hoitamiseksi on sovittaa ensin pistejoukkoon taso, jolle kaikki pisteet sitten projisoidaan. Projisoituihin pisteisiin voidaan sitten käyttää ympyrän tasosovitusta." by Jäärä

    Tuo Jäärän ehdotus on hyvä, mutta mutta mitenkähän käytännön toteutus tälläisessa tilanteessa?

    Olen kuluttanut jonkin päivän aikaa kuukkelin parissa etsien tietoa, vaan empä ole vielä löytänyt...

    Äänestä

  • best fit kirjoitti:

    Kyseessä on tosiaan ympyrä eikä pallo.
    Koordinaatit ovat x, y ja z.

    " Koska ympyrä on kuitenkin tasokuvio, niin yksi tapa tilanteen hoitamiseksi on sovittaa ensin pistejoukkoon taso, jolle kaikki pisteet sitten projisoidaan. Projisoituihin pisteisiin voidaan sitten käyttää ympyrän tasosovitusta." by Jäärä

    Tuo Jäärän ehdotus on hyvä, mutta mutta mitenkähän käytännön toteutus tälläisessa tilanteessa?

    Olen kuluttanut jonkin päivän aikaa kuukkelin parissa etsien tietoa, vaan empä ole vielä löytänyt...

    Minulla on hyvin vaalean harmaa mielikuva, että olen puuhaillut erilaisten käyrien sovittamisessa mittauspistejoukkoon ja muistaakseni siellä oli mukana ympyräkin. Mutta siitä on jo aikaa pitkälti toistakymmentä vuotta, joten mielikuvat eivat ole aivan tarkimmillaan.

    Kaivelen arkistojani ja katson, mitä sieltä oikein löytyy, ja kerron sitten tuloksista.

    Äänestä

  • vanha.jaara kirjoitti:

    Minulla on hyvin vaalean harmaa mielikuva, että olen puuhaillut erilaisten käyrien sovittamisessa mittauspistejoukkoon ja muistaakseni siellä oli mukana ympyräkin. Mutta siitä on jo aikaa pitkälti toistakymmentä vuotta, joten mielikuvat eivat ole aivan tarkimmillaan.

    Kaivelen arkistojani ja katson, mitä sieltä oikein löytyy, ja kerron sitten tuloksista.

    Jos vain löydät lisää tietoa, niin olen ikuisesti kiitollinen...

    Kiitokset etukäteen vaivannäöstä

    Äänestä

  • best fit kirjoitti:

    Jos vain löydät lisää tietoa, niin olen ikuisesti kiitollinen...

    Kiitokset etukäteen vaivannäöstä

    Olen todella tehnyt joskus kymmenkunta vuotta sitten algoritmin, joka ensin sovittaa tason 3D-pisteisiin pienimmän neliösumman menetelmällä. Tasoon on määritetty sitten 2D-koordinaatisto, jossa on taas sovitettu ympyröitä, sekä käyttänyt näitä vielä tänäkin päivänä pyörivässä sovellutuksessa. Mutta jos olet niin allerginen matematiikalle, kuin tuossa ensi viestissäsi vihjaat, tuokaan algoritmi ei ole sinua varten. Kun vielä tarkistin tuon antamasi linkin, huomasin, että käyttämäni menetelmä vie hyvin lähelle tuon linkin esittämästä lähtökohdasta johdettuja yhtälöitä, mikä ei tosin ole mikään ihme, koska lähes samasta asiasta on kyse.

    Tosin vieläkin tarkentaisin tarvettasi, onko tarkoitus vain saada sovitetuksi ympyrä avaruuspisteisiin vai onko tärkeämpää käyttää nimenomaan pienimmän neliösumman menetelmää tuossa sovittamisessa? Siis onko ympyrä vai käytetty menetelmä tärkein?

    Äänestä

  • vanha.jaara kirjoitti:

    Olen todella tehnyt joskus kymmenkunta vuotta sitten algoritmin, joka ensin sovittaa tason 3D-pisteisiin pienimmän neliösumman menetelmällä. Tasoon on määritetty sitten 2D-koordinaatisto, jossa on taas sovitettu ympyröitä, sekä käyttänyt näitä vielä tänäkin päivänä pyörivässä sovellutuksessa. Mutta jos olet niin allerginen matematiikalle, kuin tuossa ensi viestissäsi vihjaat, tuokaan algoritmi ei ole sinua varten. Kun vielä tarkistin tuon antamasi linkin, huomasin, että käyttämäni menetelmä vie hyvin lähelle tuon linkin esittämästä lähtökohdasta johdettuja yhtälöitä, mikä ei tosin ole mikään ihme, koska lähes samasta asiasta on kyse.

    Tosin vieläkin tarkentaisin tarvettasi, onko tarkoitus vain saada sovitetuksi ympyrä avaruuspisteisiin vai onko tärkeämpää käyttää nimenomaan pienimmän neliösumman menetelmää tuossa sovittamisessa? Siis onko ympyrä vai käytetty menetelmä tärkein?

    Tärkeintä on saada sovitettua ympyrä annettuihin pisteisiin -> menetelmällä ei ole niin suurta väliä..

    "Olen todella tehnyt joskus kymmenkunta vuotta "sitten algoritmin, joka ensin sovittaa tason 3D-"pisteisiin pienimmän neliösumman menetelmällä. "Tasoon on määritetty sitten 2D-koordinaatisto, "jossa on taas sovitettu ympyröitä, sekä käyttänyt "näitä vielä tänäkin päivänä pyörivässä "sovellutuksessa"

    Eikös tuo ole sitten valmis systeemi?

    En ole ihan allerginen matematiikalle, vaan kouluajoista on jo aikaa ja työasiat haittaavat harrastuksia.

    Äänestä

  • best fit kirjoitti:

    Tärkeintä on saada sovitettua ympyrä annettuihin pisteisiin -> menetelmällä ei ole niin suurta väliä..

    "Olen todella tehnyt joskus kymmenkunta vuotta "sitten algoritmin, joka ensin sovittaa tason 3D-"pisteisiin pienimmän neliösumman menetelmällä. "Tasoon on määritetty sitten 2D-koordinaatisto, "jossa on taas sovitettu ympyröitä, sekä käyttänyt "näitä vielä tänäkin päivänä pyörivässä "sovellutuksessa"

    Eikös tuo ole sitten valmis systeemi?

    En ole ihan allerginen matematiikalle, vaan kouluajoista on jo aikaa ja työasiat haittaavat harrastuksia.

    Jos tuo pisteparvi on säännönmukaisempi kuin haulien asemat sadan metrin päässä haulikon piipusta, niin esimerkiksi seuraavaa voisi yrittää:

    1. Lasketaan pisteparven r[i] (i=1,…,N) keskiarvopiste, ja olkoon tämä piste rc sekä eri kuin r[1].

    2. Määritetään vektorit v1 = r[1]-rc ja v[i] = r[i]-rc (i=2,...,N) sekä näiden ristitulot n[i]= v1 x v[i]. Normaalistetaan lisäksi n[i]:t yksikkövektoreiksi ja käännetään ne kaikki samalle puolelle puoliavaruutta (vektoreiden pistetulot positiivisia).

    3. Lasketaan vektoreiden n[i] summa np ja normaalistetaan se. Nyt np on ympyrän tason yksikkönormaalin likiarvo.

    4. Otetaan v1 tasokoordinaatiston x’-akselin ja np z’-akselin suunnaksi. Nyt y’-akselin suunta on j’ = np x v1. Normaalistetaan koordinaattiakseleiden x' ja y' suunnat i’ ja j’.

    5. Projisoidaan pisteet r[i] (i=1,…,N) muodostettuun tasokoordinaatistoon, eli x’ = r[i].i’ ja y’ = r[i].j’.

    6. Sovitetaan ympyrä tason pisteisiin joko neliösumman minimoinnilla tai sitten määrittämällä aina kolmen pisteen yhdistelmän perusteella ympyrä ja laskemalla sitten kaikkien ympyröiden keskipisteiden ja säteiden avulla keskiarvot.

    Näistä temppukokoelma 1 - 5 on kokeiltu ja toimiviksi havaittu. Kohtaa 6 ei tässä yhdistelmässä ole käytetty, mutta sitäkin erillisenä kokeiltu.

    Äänestä

  • vanha.jaara kirjoitti:

    Jos tuo pisteparvi on säännönmukaisempi kuin haulien asemat sadan metrin päässä haulikon piipusta, niin esimerkiksi seuraavaa voisi yrittää:

    1. Lasketaan pisteparven r[i] (i=1,…,N) keskiarvopiste, ja olkoon tämä piste rc sekä eri kuin r[1].

    2. Määritetään vektorit v1 = r[1]-rc ja v[i] = r[i]-rc (i=2,...,N) sekä näiden ristitulot n[i]= v1 x v[i]. Normaalistetaan lisäksi n[i]:t yksikkövektoreiksi ja käännetään ne kaikki samalle puolelle puoliavaruutta (vektoreiden pistetulot positiivisia).

    3. Lasketaan vektoreiden n[i] summa np ja normaalistetaan se. Nyt np on ympyrän tason yksikkönormaalin likiarvo.

    4. Otetaan v1 tasokoordinaatiston x’-akselin ja np z’-akselin suunnaksi. Nyt y’-akselin suunta on j’ = np x v1. Normaalistetaan koordinaattiakseleiden x' ja y' suunnat i’ ja j’.

    5. Projisoidaan pisteet r[i] (i=1,…,N) muodostettuun tasokoordinaatistoon, eli x’ = r[i].i’ ja y’ = r[i].j’.

    6. Sovitetaan ympyrä tason pisteisiin joko neliösumman minimoinnilla tai sitten määrittämällä aina kolmen pisteen yhdistelmän perusteella ympyrä ja laskemalla sitten kaikkien ympyröiden keskipisteiden ja säteiden avulla keskiarvot.

    Näistä temppukokoelma 1 - 5 on kokeiltu ja toimiviksi havaittu. Kohtaa 6 ei tässä yhdistelmässä ole käytetty, mutta sitäkin erillisenä kokeiltu.

    Kiitokset vaivannäöstä.
    Ryhdyn pähkäilemään asiaa.

    Tosin joudun alustavasti kolmen viikon työkeikalle, joten luultavasti en ehdi perehtymään asiaan ennen sen päättymistä.

    Joka tapauksessa suuret kiitokset..

    Äänestä

Kommentoi aloitusta


best fit kirjoitti:

N kappaletta pisteitä x,y,z koordinaatistossa pitäisi saada sovitettua ympyräksi pienimmän neliösumman menetelmällä?

Eli miten tämän kaavarypäksen
(http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/FISHER/CIRCLEFIT/fit3dcircle/fit3dcircle.html)
saisi tungettua excel-taulukkoon?

Tietenkin jos löytyy valmis ohjelma, niin sepä vasta herkkua olisi..

nimimerkillä: "kaavat ja järkiparka hukassa" ja lisäksi vähemmän matemaattinen ihminen

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu