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:

<?php
header("Content-type: image/gif");
$sugar = $_GET['sugar'];
$t = $_GET['koron_kivuli_hosszusag'];
$T = $_GET['koron_kivuli_magassag'];
$belso_kor_hosszusag = $sugar/2;
$F = 400+$sugar/4;
$t2=400+$sugar/2;
$t3 =$t2+$t;

$T2 = $T;

$kep = imagecreate( 1200, 800 );
$hatter = imagecolorallocate($kep, 255,255,255);
$fekete = imagecolorallocate($kep, 0,0,0 );

 $a_kor_sugar = imageline( $kep, 400-1, 500-1, 400-1+$belso_kor_hosszusag, 500-1, $fekete );

 $a_kor = imagefilledarc( $kep, 400-1, 500-1, $sugar-1, $sugar-1, 0, 360 , $fekete,IMG_ARC_NOFILL);

 $a_kor_F_resze = imageline( $kep, $F-1, 480-1, $F-1 ,520-1, $fekete );

 $a_t_középsö = imageline( $kep, $t2-1, 500-1, $t3-1 ,500-1, $fekete );

 $a_t_felsö= imageline( $kep, $t3-1,  500-1-$T2/2, $t2-1 ,500-1-$T2/2, $fekete );

 $a_T = imageline( $kep, $t3-1, 500-1-$T2/2, $t3-1 ,500-1, $fekete );

 $a_kor_Q_tol_T_tetejeig = imageline( $kep, $t2-1, 500-1, $t3-1 ,500-1-$T2/2, $fekete );



$a_2_lenti = imageline( $kep, $t2-1, 500-1, $t3-1 ,500-1+$T2, $fekete );
$a_2_fenti = imageline( $kep, $t2-1, 500-1-$T2/2, $t3-1,500-1-$T2-$T2/2, $fekete );


$a_1_ball = imageline( $kep, $F-1,  500-1, $t3-$t-1 ,500-1-$T2/2, $fekete );
$a_1_jobb = imageline( $kep, $t2-1, 500-1, $F-1,500-1-$T2/2, $fekete );

imagegif($kep);
?>


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

$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
<?php
header("Content-type: image/gif");
$y=200;
$u=250;
$v=300;
$r=180;

$kep = imagecreate( 800, 800 );
$hatter = imagecolorallocate($kep, 255, 255, 255);
$fekete = imagecolorallocate($kep, 0, 0, 0);
$kor = imagefilledarc( $kep, $u, $v, $r*2, $r*2, 0, 360 , $fekete, IMG_ARC_NOFILL);

$x = sqrt(pow($r, 2) - pow($y-$v, 2))+$u;
$egyenes = imageline( $kep, $x,  $y, 1200 , $y, $fekete );

imagegif($kep);
?>
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