Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Matemaattinen ongelma

Sivun loppuun

Janezki [23.03.2005 10:44:15]

#

Tarvitsisin ratkaisun seuraavan ongelmaan:
2D -Koordinaatistossa on piste A, jonka yläpuolella on piste B (B.Y = A.Y - 1). Mikä on pisteen A,B ja satunnaisen pisteen C muodostama NEGATIIVINEN kulma, eli kulman kiertosuunta on myötäpäivään?

Antti Laaksonen [23.03.2005 16:04:13]

#

Esimerkkikuva selventäisi kysymystäsi. Mikä piste on A,B?

dOb [23.03.2005 16:26:20]

#

Jos nyt ymmärsin ongelman oikein, niin haluat viivan, joka kulkee pisteestä A pisteeseen B ja viivan, joka kulkee pisteestä A pisteeseen C välisen kulman, vai mitä?

Megant92 [23.03.2005 16:34:26]

#

Voisit selittää lisäksi mikä kulma?

Jaska [23.03.2005 16:40:13]

#

Juu, eihän kaksi pistettä muodosta kulmaa vaan tarvitaan kolmaskin piste. Jos tiedät nämä kolme pistettä saa tuloksen helposti vektoreiden pistetulon avulla.

Janezki [23.03.2005 17:18:44]

#

Siis niin kuin dOb sen käsitti, eli piste A on kulman kärkipiste. Tarkoitin piste A,B:llä piste A:ta ja piste B:tä.

dOb [23.03.2005 18:03:10]

#

No sittenhän tämän saa ratkaistua atan2:n avulla, mutta koska tuotahan ei jokapaikassa ole käytettävissä(?), en tiedä miten tämän voi ratkaista ilman sitä (eli en tiedä mikä atan2:n kaava on).

Tässä on jonkinmoista koodia, josta (luultavasti) selviää millä tyylillä olen ratkaissut tämän. Tämä tuskin on optimaalisin ratkaisu, koska en tosiaan ole kovin pro näissä asioissa ;) (neuvoja otetaan vastaan! :)).

// pisteet
Vector a, b, c

a.x = 0
a.y = 0

b.x = a.x
b.y = a.y - 1

// joku satunnainen paikka tälle siis
c.x = 3
c.y = 2

// vektori, joka osoittaa a:sta b:hen
Vector d = b - a

// vektori, joka osoittaa a:sta c:hen
Vector e = c - a

kulma = atan2(e.x * d.x - e.y * d.y, e.x * d.x + e.y * d.y)

// laitetaan kulma oikealle välille, eli 0...2pi
if kulma < 0
    kulma = kulma + 2 * pi

Ja siinä on kulma radiaaneina (toivottavasti ;S).

Blaze [23.03.2005 18:20:23]

#

Eikös se ole ihan arkustangentti vastaisen ja viereisen kateetin osamäärästä?

Janezki [23.03.2005 18:42:27]

#

Blaze kirjoitti:

Eikös se ole ihan arkustangentti vastaisen ja viereisen kateetin osamäärästä?

Mutta kun kulma on väliltä 1..360, joten on mahdollista, että viereinen kateetti on nolla, jolloin tulee jako nollalla. Tietysti tämän voi korjata.

Kokeilin huvikseen atan2:sta ja se ratkaisi ongelman. Mikä se muuten on?

hunajavohveli [23.03.2005 21:06:11]

#

Eikö se ole muuten kuin perus-atan, mutta ottaa huomioon myös etumerkit, jolloin saadaan käyttöön koko 0-360 -alue? Tai näin minä ainakin olen käsittänyt. En ole itse käyttänyt kuitenkaan koskaan.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta