Remélem sikerült érthetően elmagyarázni a problémámat.
Köszi a segítséget.
Update: Köszönöm mindenkinek a segítséget, az itt leírt módszerekkel, sikerült megoldani a feladatot.
- Luther blogja
- A hozzászóláshoz be kell jelentkezni
- 1233 megtekintés
Hozzászólások
Ha jol szamolom:
1)
CX = (BX-AX)*delta+AX
CY = (BY-AY)*delta+BY
2) itt keves az info, kene tudni, hogy az DE egyenes hol van (pl milyen tavol B ponttol)
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
bemenő paraméter: A(ax:valós,ay:valós), B(bx:valós,by:valós), l:valós
ha l > 0:
akkor C = B + (A->B)/(|A->B|)*l
C pont a B-hez hozzáadva a az A-ból B-be mutató vektorból előállított egységvektor l szeresét.
ab = sqrt((bx-ax)^2+(by-ay)^2)
cx = bx + (bx-ax)/ab*l
cy = by + (by-ay)/ab*l
ha l < 0:
hasonlóan
C = A + (B->A)/(|B->A|)*|l|
a D és E trükkösebb, jelezd, ha eddig érthetően írtam le és nem értettem félre.
Lehet, hogy DE felezi a BC-t?
- A hozzászóláshoz be kell jelentkezni
Igen, felezi DE BC-t, írja is: "(ami a tengelyt pont középen metszi)"
Petya
- A hozzászóláshoz be kell jelentkezni
Nos így első nekifutásra teljesen érthető és igen erre gondoltam, de behelyettesítve számokkal némi eltérést mutatnak a kapott értékek a valósághoz képest.
Például:
A(X=4, Y=3)
B(X=8, Y=7)
l=8
Ez alapján:
ab = sqrt((bx-ax)^2+(by-ay)^2)
ab = 5,6568
cx = bx + (bx-ax)/ab*l --> cx = 8+(8-4)/5,6568*8 -->13,6569
cy = by + (by-ay)/ab*l --> cy = 7+(7-3)/5,6568*8 -->12,6569
Ha megrajzolom akkor viszont cx=12,6569, cy=13,6569. Tehát éppen fordítva. Ezt nem igazán értem, hogy miként jön ki.
*Szerk: Más számokkal helyettesítve jónak tűnik.
"Lehet, hogy DE felezi a BC-t?"
Nem. Fordítva. BC felezi DE-t, tehát a D és E pontok a BC tengely bármely pontjától azonos távolságra helyezkednek el.
A DE tengely bárhol elhelyezkedhet, de mindig derékszöget zár be a BC tengellyel.
--------------
“If there were no hell, we would be like the animals. No hell, no dignity.”
- A hozzászóláshoz be kell jelentkezni
Márpedig jó az, vagy a tengelyeket cserélted fel, vagy a rajzolást rontottad el.
Akkor viszont, ahogy felettem is írták, D-E lehet akárhol, kell még valami feltétel, hogy hol legyen a merőleges szakasz.
A->B vektorból egységvektort már csináltunk az előbb, ezt 90°-kal elforgatni azt jelenti, hogy a koordinátákat felcseréled és az egyiket -1-gyel szorzod.
V vektor legyen ami DE irányba áll és egységvektor (az előző comment jelöléseivel):
vx = (by-ay)/ab
vy = -(bx-ax)/ab
D = F + V*|DE|/2 és E = F - V*|DE|/2 lesz a két pont, ha |DE| a szakasz hossza, F pedig a felezőpontjuk, ami valahova a BC szakaszra esik.
Ha DE felezi BC-t, akkor F = (B+C)/2 .
Ezek az egyenletek koordinátánként értendőek, tehát külön x-re és y-ra két formulát ad.
- A hozzászóláshoz be kell jelentkezni
"Márpedig jó az, vagy a tengelyeket cserélted fel, vagy a rajzolást rontottad el."
Igen, valamit elnézhettem, mert más számokkal tökéletes. Első probléma megoldva, köszönöm.
A merőleges, mint írtam bárhol lehet az AB tengelyen. Most a példa kedvéért legyen mondjuk a B ponton.
Bemenő paraméterként megadnám a B X és Y koordinátáit, valamint a leendő DE tengely hosszát.
A cél tehát egy AB-ra merőleges tengely két pontjának (D és E) X és Y koordinátájának a meghatározása.
--------------
“If there were no hell, we would be like the animals. No hell, no dignity.”
- A hozzászóláshoz be kell jelentkezni
A merőleges vektorokat normálvektornak hívják, és pl. egy v=(3,10) vektorra merőleges az u1=(-10,3) illetve az u2=(10,-3) vektor.
Az AB vektort lenormálod (a koordinátákat elosztod AB hosszával), veszed a bal normálvektorát, megszorzod a DE hosszának felével, és hozzáadod a B koordinátáit: így kapod a D pontot. Az E pont hasonló, csak ott a másik irányba kell menni.
pl.
A=(10,20)
B=(30,35)
DE hossza legyen 5.
--
AB=B-A=(20,15)
AB lenormálva: (0.8, 0.6)
AB normáltjának balnormálvektora: (-0.6, 0.8)
DE félhossza 2.5
D = B + 2.5*(-0.6, 0.8) = (30, 35) + (-1.5, 2) = (28.5, 37)
E = B - 2.5*(-0.6, 0.8) = (30, 35) - (-1.5, 2) = (31.5, 33)
- A hozzászóláshoz be kell jelentkezni
Matek házi felső tagozatban? Ja, és koordinátageometria, ha már hasogatom a szőrszálat...
- A hozzászóláshoz be kell jelentkezni
Nekem inkább a középiskolából dereng valami, de ez most teljesen mindegy. A lényeg, hogy elég régen volt és azóta egyetlen alkalom sem indokolta, hogy felfrissítsem ezeket az ismereteimet. Lámaság vagy nem, de az idő elmúltával rozsdásodik az ember, ez van.
--------------
“If there were no hell, we would be like the animals. No hell, no dignity.”
- A hozzászóláshoz be kell jelentkezni