Autor | Zpráva | ||
---|---|---|---|
martik__ Profil |
#1 · Zasláno: 11. 8. 2008, 13:11:00
Zdravím, potřeboval bych pomoct s GD knihovnou, tedy spíš se způsobem jak udělat pomocí PHP jednu věc:
Představme si, že máme čtvercový obrázek s černým pozadím. Pomocí GD knihovny do něj nakreslíme třeba trojúhelník. Jeho vrcholy jsou dány souřadnicemi, díky kterým je může GD knihovna nakreslit. A teď ten problém - vygeneruju si náhodný bod B[x, y] a potřebuju zjistit, jestli tento bod B leží uvnitř toho dříve vytvořeného trojúhelníku. Fakt budu moc vděčnej za jakoukoliv radu, protože už nevím co s tím :-) |
||
Alphard Profil |
#2 · Zasláno: 11. 8. 2008, 13:28:27
to není ani tak problém PHP nebo snad GD knihovny, k řešení stačí matematika
přepokládám, že pracujete s pravoúhlými souřadnicemi a jedno z řešení by mohlo být vést bodem B vodorovnou a svislou osu a spočítat, jestli je bod B po obou stranách na obou osách ohraničen |
||
martik__ Profil |
#3 · Zasláno: 11. 8. 2008, 13:43:31
Ještě bych teda prosil příklad toho výpočtu ... díky
|
||
martik__ Profil |
#4 · Zasláno: 11. 8. 2008, 13:45:08
Ještě by teda prosil příklad toho výpočtu ... díky
|
||
Icepoint Profil |
#5 · Zasláno: 11. 8. 2008, 16:12:53 · Upravil/a: Icepoint
varuju vas, jsem vysokoskolak, toto bude komplexni reseni :)
ok, budu to brat vsechno symbolickymi vypocty, nikoliv s cislama, snad to pochopis... takze mame takovouhle situaci: teda nejdrive si musime nadefinovat rovnice primek ... tedy: zacnem primkou AB: - vektor vAB=B-A = [Xb-Xa;Yb-Ya] - tedy primka rovnice primky AB je aX + bY + c = 0 kde a a b jsou souradnice normaloveho vektoru a c je posun (ktery se dopocita dosazenim nejakeho bodu primky). normalovy vektor je kolmy, ten ziskame prohozenim souradnic vektoru primky a a naslednym vynasobenim jedne ze souradnic -1, tedy normalovym vektorem primky bude NvAB=[Ya-Yb; Xb-Xa], dosadime do obecne rovnice primky: (Ya-Yb)X + (Xb-Xa)Y + c = 0 do rovnice disadime jeden z bodu (bud A nebo B), tim ziskame neznamou c, zde pro priklad dosazuji bod A charakterizovany souradnicemy [Xa, Ya]: c=-(Ya-Yb)*Xa - (Xb-Xa)*Ya z cehoz nam vznikne obecny tvar primky pAB: (Ya-Yb)X + (Xb-Xa)Y -(Ya-Yb)*Xa + (Xb-Xa)*Ya = 0 takovymto zpusobem dopocitame vsechny ostatni primky, ktere definuji trojuhelnik... (Ya-Yc)X + (Xc-Xa)Y -(Ya-Yc)*Xa + (Xc-Xa)*Yc = 0 (primka pAC) (Yb-Yc)X + (Xc-Xb)Y -(Yb-Yc)*Xb + (Xc-Xb)*Yc = 0 (primka pBC) dalsi veci je protahnout bodem Z vodorovou a svislou primku: obecna rovnice vodorovne primky, protazene nejakym bodem je: Y = konst. tedy, pro bod Z to bude Y = Yz pro svislou to bude podobne: X = Xz v obecnem rtvaru to bude takto: Y - Yz = 0 X - Xz = 0 nyni, kdyz mame obecne tvary vsech primek, staci zjistit jejich spolecne body, ktere zjistime jednodusse vytvorenim soustavy rovnic primky vodorovne/svisle s jednou z primek tvorici trojuhelnik. Vysledkem nam budou souradnice pruseciku. Nyni musime porovnat souradnice bodu, ktere nam vzniknou. To uz snad dokazes vymyslet sam :) |
||
Časová prodleva: 16 let
|
0