ugrás a tartalomhoz

PHP-GD kör és vonal nem érintkezik

kriszrap · 2011. Már. 18. (P), 14.56
Sziasztok!!!
Gömb vissza tükrözést kell csinálnom fizzikára és az a baj hogy van benne
hiba:(
Tudnivalók:
Bekérünk 3 dolgot.
$sugar = kör sugára.
$t = Külsö kör ivtöl való távolság.
$T = $t magassága.
itt a kód:
  1. <?php  
  2. header("Content-type: image/gif");  
  3. $sugar = $_GET['sugar'];  
  4. $t = $_GET['koron_kivuli_hosszusag'];  
  5. $T = $_GET['koron_kivuli_magassag'];  
  6. $belso_kor_hosszusag = $sugar/2;  
  7. $F = 400+$sugar/4;  
  8. $t2=400+$sugar/2;  
  9. $t3 =$t2+$t;  
  10.   
  11. $T2 = $T;  
  12.   
  13. $kep = imagecreate( 1200, 800 );  
  14. $hatter = imagecolorallocate($kep, 255,255,255);  
  15. $fekete = imagecolorallocate($kep, 0,0,0 );  
  16.   
  17.  $a_kor_sugar = imageline( $kep, 400-1, 500-1, 400-1+$belso_kor_hosszusag, 500-1, $fekete );  
  18.   
  19.  $a_kor = imagefilledarc( $kep, 400-1, 500-1, $sugar-1, $sugar-1, 0, 360 , $fekete,IMG_ARC_NOFILL);  
  20.   
  21.  $a_kor_F_resze = imageline( $kep$F-1, 480-1, $F-1 ,520-1, $fekete );  
  22.   
  23.  $a_t_középsö = imageline( $kep$t2-1, 500-1, $t3-1 ,500-1, $fekete );  
  24.   
  25.  $a_t_felsö= imageline( $kep$t3-1,  500-1-$T2/2, $t2-1 ,500-1-$T2/2, $fekete );  
  26.   
  27.  $a_T = imageline( $kep$t3-1, 500-1-$T2/2, $t3-1 ,500-1, $fekete );  
  28.   
  29.  $a_kor_Q_tol_T_tetejeig = imageline( $kep$t2-1, 500-1, $t3-1 ,500-1-$T2/2, $fekete );  
  30.   
  31.   
  32.   
  33. $a_2_lenti = imageline( $kep$t2-1, 500-1, $t3-1 ,500-1+$T2$fekete );  
  34. $a_2_fenti = imageline( $kep$t2-1, 500-1-$T2/2, $t3-1,500-1-$T2-$T2/2, $fekete );  
  35.   
  36.   
  37. $a_1_ball = imageline( $kep$F-1,  500-1, $t3-$t-1 ,500-1-$T2/2, $fekete );  
  38. $a_1_jobb = imageline( $kep$t2-1, 500-1, $F-1,500-1-$T2/2, $fekete );  
  39.   
  40. imagegif($kep);  
  41. ?>  


Na halodtam olyanról hogy elinditunk egy ciklus és amikor egy másik szinhez ér a vonal akkor megálitja a ciklust.
 
1

Szögfüggvények

janoszen · 2011. Már. 18. (P), 17.59
Ami az igazi megoldás itt, az a szögfüggvények használata (lásd matek óra), mert azzal ki tudod számolni, hova kell húzni a vonalat.

Természetesen nézheted a színeked, de ahhoz legjobb tudomásom szerint saját magadnak kell megírni a vonalat húzó algoritmust és pixelenként kirajzolni.
2

Nem egyértelmű hogy mi is a

vbence · 2011. Már. 18. (P), 18.02
Nem egyértelmű hogy mi is a feladat.
3

és a színes megoldást

kriszrap · 2011. Már. 19. (Szo), 23.18
Létszi segítsetek :(
Színes megoldás nem lenne rossz de hogy csináljam??:(
4

De mi a feladat?

vbence · 2011. Már. 20. (V), 00.44
Pont a hozzászólásban, amire válaszoltál, írtam, hogy nem világos a feladat. Gondold végig, írd le értelmes mondatokban, olvasd vissza, és ha sikerült megfogalmazni, mit is szeretnél, szívesen segítünk.
5

A képen látható piros

kriszrap · 2011. Már. 20. (V), 01.09
A képen látható piros bekarikázot résznél ügye nem érintkezik a körrel. :(
A t_felsö-t hosszuságát addig kéne növelni amig nem érintkezik a körrel.
6

Még mindig kevés

vbence · 2011. Már. 20. (V), 10.53
Ez még mindig nem a feladat leírása. $a_2_fenti például micsoda? És mi az összes többi?
7

$a_2_fenti a vissza verödés:D

kriszrap · 2011. Már. 20. (V), 20.47
$a_2_fenti a vissza verödés:D
de az most sztem nem lénnyeg csak annyi kell hogy a $a_2_fenti alati vonal a körhöz érjen a többi menni fog:D
8

Pont ez lenne a lényeg...

vbence · 2011. Már. 20. (V), 21.48
de ha harapó fogóval se lehet kihúzni belőled, én ünnepélyesen feladom.
9

$a_t_felsöt szeretném meg

kriszrap · 2011. Már. 20. (V), 22.10
$a_t_felsöt szeretném meg hosszabitani a körig . de ugye a kör minden px elnél beljebb van és igy nem éri el a kört :D $a_T egy voltozo hosszuságú vonal csak a képen nem látszik mert nagy a kép:(
10

picit bőbeszédűbben?

solkprog · 2011. Már. 21. (H), 00.18
$_a_t_felsö hol érintkezzen a körrel? Körnek a kerületén bármelyik pontnál érintkezhet vele..
Vagyis az $_a_t_felsö-t vízszintesen képzeled meghosszabbítani, vagy oda kéne érjen ahova az $_1_ball? mert nem mindegy..
Illetve mi lenne megrajzolnád hogy mit szeretnél kapni, amin bónuszként jelölnéd a tudott szögeket, és belinkelnéd ide? nem rosszból mondom.. hamarabb kapnál választ..
11

$a_t_felsöt szeretném

kriszrap · 2011. Már. 21. (H), 18.22
$a_t_felsöt szeretném visszintesen meg hosszabitani addig amig a körívéhez nem ér. $a_T pedig változo.
12

kör egyenlete

solkprog · 2011. Már. 21. (H), 18.39
  1. $a_t_felsö= imageline( $kep$t3-1,  500-1-$T2/2, $t2-1 ,500-1-$T2/2, $fekete );   
Ebből az imageline második paramétere nem jó (első x koordináta)

Na most van egy ilyen képlet:
(x-u)^2 + (y-v)^2 = r^2
link

Ebből tudod a kör középpontját, a sugarat, és a P (metszéspont) y koordinátáját (500-1-$T2/2). ergó ki kell tud fejezni az x-et (ami az imageline második paramétere lesz)
13

az a baj hogy a képletbe

kriszrap · 2011. Már. 21. (H), 19.42
mi az u meg v???:(
14

Elolvastad?

Poetro · 2011. Már. 21. (H), 19.46
Elolvastad a belinkelt tartalmat? Mert azon rajta van. De ha másik leírás kell, akkor van egy a Wikipédián is.
15

sajna ezt nem tom meg

kriszrap · 2011. Már. 21. (H), 20.36
sajna ezt nem tom meg csinálni:( probálkozom de nem megy:(
16

nem ellenőriztem le de

solkprog · 2011. Már. 21. (H), 21.20
ugyan nem ellenőriztem le de:
(x-u)^2 + (y-v)^2 = r^2
x=?
y=499-$T2/2
u=399
v=499
r=$sugar-1

(x-399)^2 + (499-$T2/2-499)^2 = ($sugar-1)^2
(x-399)^2 = ($sugar-1)^2 - (499-$T2/2-499)^2

(egyszerűsítsd ha akarod)
de ebben a formában a további teendőd: számoltasd ki az egyenlet jobb oldalát, abból vonj gyököt, majd adj hozzá 399-et és megkapod az x-et
17

szerintem ezt hagyom:( sztem

kriszrap · 2011. Már. 21. (H), 21.35
szerintem ezt hagyom:(
sztem azt csinálom hogy addig növelem viszintesen a vonalat amig egy másikhoznem ér de ezt hogy tom?? ez sztem egyszerübb
18

példakód

solkprog · 2011. Már. 21. (H), 22.33
  1. <?php  
  2. header("Content-type: image/gif");  
  3. $y=200;  
  4. $u=250;  
  5. $v=300;  
  6. $r=180;  
  7.   
  8. $kep = imagecreate( 800, 800 );  
  9. $hatter = imagecolorallocate($kep, 255, 255, 255);  
  10. $fekete = imagecolorallocate($kep, 0, 0, 0);  
  11. $kor = imagefilledarc( $kep$u$v$r*2, $r*2, 0, 360 , $fekete, IMG_ARC_NOFILL);  
  12.   
  13. $x = sqrt(pow($r, 2) - pow($y-$v, 2))+$u;  
  14. $egyenes = imageline( $kep$x,  $y, 1200 , $y$fekete );  
  15.   
  16. imagegif($kep);  
  17. ?>  
Ez az egyenlet egyébként érettségis anyag.. csak mert írtad hogy középiskolás vagy

szerkesztve:
Azért nem a te kódodba írtam bele, mert összevissza használod a változóneveket.. például $sugar nálad a kör szélessége...
így a fenti képlet se helyes!
19

ezt ki proszálom ha sikerül

kriszrap · 2011. Már. 27. (V), 01.56
sikerült az elözö de van még egy dolog ami nem tom kiszámolni:(

A piros vonal az. (régi képet szerkesztedtem)
Lassan 1 hete küszködöm vele:(
20

új téma

solkprog · 2011. Már. 27. (V), 09.44
Első-körben nyiss egy új témát.

Továbbá most lehetőleg ne kelljen bokszolni veled azért hogy elmond hogy mi a fenét szeretnél kiszámolni..
21

rendben:D

kriszrap · 2011. Már. 27. (V), 12.54
rendben:D