Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Matemaattinen piste-sektorin-sisällä-tarkistus

hunajavohveli [27.02.2004 12:11:06]

#

Sain omasta päästästäni keksittyä, miten saa tarkistettua, onko piste ympyrän sisällä. Tiedetään ympyrän ja pisteen koordinaatit, sekä ympyrän säde. Eli yksinkertaisesti lasketaan molempien x-koordinaattien erotus ja molempien y-koordinaattien erotus, jolloin saadaan sivut a ja b.

a^2 + b^2 = c^2
Sitten neliöjuuri c^2 niin saadaan c, joka on pisteen etäisyys ympyrän keskipisteestä. Jos tuo etäisyys on pienempi kuin ympyrän säde, piste on silloin ympyrän sisällä. Jos taas se on suurempi, piste on ulkopuolella.

Mutta osaisiko joku neuvoa, miten tehdään sellainen, joka laskee onko piste sektorin sisällä. Muuten sama kuin edellisessä, mutta nyt tiedetään lisäksi asteina sektorin alkamis- ja loppumiskulma.

Antti [27.02.2004 13:58:52]

#

Siis toisin sanoen kyseessä on nyt siis ympyrä - ei soikio.

Laita origoksi ympyrän keskusta. Tutki kuinka kaukana haettu piste on origosta X- ja Y-akseleilla suhteessa ympyrän kehään. Tämän voit tutkia pelkästään ympyrän neljänneksellä (kaikki arvot positiivisia).

Eli ensiksi haet ympyrän suurimman arvon X-akselilla:
- mikäli verrattavan pisteen x-arvo ylittää sen se on jo ulkona.
- Seuraavaksi otat vertailtavan pisteen x-arvon (kateetti) ja ympyrän x-arvon(hypotenuusa) ja lasket sen perusteella ympyrän y-pisteen (toinen kateetti) vertailtavan pisteen x-kohdassa:
yx ja yy = ympyrän kehän koordinaatit
px ja py = vertailtavan pisteen koordinaatit

yy = Neliöjuuri((yx*yx)-(px*px))

eli siis toisen kateetin pituus...

Ja vertaat saatua pistettä vertailtavan pisteen y-koordinaattiin.

tn [27.02.2004 14:58:06]

#

En kyllä tajunnut oikein tota Antin vastausta, mutta asianhan voi helposti selvittää laskemalla arkustangentilla (qbasicissa ATN), missä kulmassa piste on ympyrän keskustaan nähden, ja vertaamalla saatua arvoa sektorin kulmiin.

hunajavohveli [27.02.2004 15:04:46]

#

Minä kyllä ymmärsin Antin vastauksen ja siitä olisi hyötyä monessa muussakin asiassa, mutta tn:n tapa oli niin yksinkertainen, että ihmettelen, miksen sitä itsekin älynnyt. Pidän kyllä tuon toisenkin tavan mielessä, mutta siitä ei ole hyötyä vielä siinä mitä nyt teen. Eli siis:

Kulma = Ympyrän ja pisten välinen kulma

IF Kulma > Alkukulma AND Kulma < Loppukulma AND Etaisyys < Sade THEN Piste on sisäpuolella.

Kiitos molemmille!

Vastaus

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

Tietoa sivustosta