Matemaattinen ongelma

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
User avatar
jannepelaa
Active Member
Posts: 101
Joined: Tue Aug 28, 2007 2:27 pm

Matemaattinen ongelma

Post by jannepelaa » Sat Mar 29, 2008 12:01 pm

Miten saan tiedettyä esim. luodin tulosuunnan perusteella osuiko luoti tästä suunnasta nähden objektin vasemmalle vai oikealle puolelle?
Kuva:
Image
Nyt luoti siis osuisi oikealle puolelle.

User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Matemaattinen ongelma

Post by SPuntte » Sat Mar 29, 2008 12:39 pm

Vastaus: et mitenkään.

Pelkkä tulokulma ei riitä, jos kyseessä on muodoltaan nollaulotteisesta pisteestä poikkeava objekti. Kannattaa toteuttaa suunnan tunnistus esim. kahdeksalla "liipaisinobjektilla", jotka sijaitsevat varsinaisen objektin ympärillä 45 asteen välein. Näin saat törmäyskulman 22,5 asteen tarkkuudella.

Eli, jos luoti törmätessää osuu vain yhteen liipaisimeen, on törmäyskulma se kulma, jossa tämä liipaisin sijaitsee suhteessa isäntään. Jos taas luoti osuu kahteen liipaisimeen, kulma on näiden suuntakulmien keskiarvo.

Toki liipaisimia voi tehdä enemmänkin mutta tarkkuus alkaa heikentyä varsinkin, jos itse isäntäobjekti on halkaisijaltaan pieni tai luoteja siirretään kerralla muutamaakaan pikseliä enemmän. Kannattaa siis ehdottomasti päivittää logiikka useamman kerran yhtä framen piirtoa kohden.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX

User avatar
Aavesoturi
Active Member
Posts: 163
Joined: Fri Aug 31, 2007 7:07 pm
Location: Helsinki
Contact:

Re: Matemaattinen ongelma

Post by Aavesoturi » Sat Mar 29, 2008 12:46 pm

Tuli tämmönen idea mieleen, että mitäs jos laskis kaksi apupistettä; toinen hieman objektin keskipisteen vasemmalla ja toinen oikealla puolella. Nämä siis laskettaisiin siten että toinen puoli saadaan kulkemalla keskipisteestä muutamia pikseleitä suuntaan tulokulma+90 astetta ja toinen kulmaan tulokulma-90 astetta.

Sitten kun ammus osuu objektiin, katsotaan distancella kumpaa apupistettä lähempänä törmäys kohta on ja se kertoisi ollaanko objektin vasemmalla puolella vai oikealla puolella.

Jos haluttaisiinkin laskea vasen ja oikea puoli objektin näkökulmasta eikä ammuksen, niin laskelmissa käytetään vaan tulokulman sijasta objektin asentoa.

Kertokaa jos keksitte miksi tämä ei toimisi; tämä idea vaan tuli mieleen hetken kuvaa tuijotettuani :)

User avatar
jannepelaa
Active Member
Posts: 101
Joined: Tue Aug 28, 2007 2:27 pm

Re: Matemaattinen ongelma

Post by jannepelaa » Sat Mar 29, 2008 2:23 pm

Ongelma ratkaistu. :D Kiitoksia avusta.

User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Matemaattinen ongelma

Post by SPuntte » Sat Mar 29, 2008 4:55 pm

Tosiaan, unohdin kokonaan että CBssä on funktiot CollisionX() ja CollisionY() :oops:
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX

Post Reply