View previous topic :: View next topic |
Author |
Message |
s1 Guest
|
Posted: Mon Jun 13, 2005 1:54 pm Post subject: taisnes v-ums |
|
pēc kādas formulas var noteikt taisnes v-umu? |
|
Back to top |
|
|
anggelus
Joined: 23 Feb 2005 Posts: 383 Location: Rīga (LV)
|
Posted: Mon Jun 13, 2005 2:16 pm Post subject: |
|
v-ums ir domāts garums vai kas? _________________ No comprendo lo que dice. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Mon Jun 13, 2005 5:06 pm Post subject: |
|
Vienādojumu?
Nu tas atkarīgs, kas tev dots un kādā formā jādabū vienādojums. Ja tev doti divi punkti uz taisnes un vdj gribi parametriskā formā, tad:
kur
Code: | a=y2-y1
b=y2-y1
t=0..1 |
Tb (x1,y1) ir sākumpunkts un (a,b) vektors uz otro punktu. |
|
Back to top |
|
|
s1 Guest
|
Posted: Mon Jun 13, 2005 7:16 pm Post subject: |
|
kā lai to "?" lielumu aprēķuna? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Mon Jun 13, 2005 7:24 pm Post subject: |
|
Izsakies tak precīzāk! Un pasaki dotos lielumus! A citādi tev bildē visi lielumi saucās vienādi (x un y). Ja "?" ir taisnes viduspunkts, tad
Code: | Xvidus=(x1+x2)/2
Yvidus=(y1+y2)/2 |
Bet ja zināma y koordināte un abi tie galapunkti, tad x koordināti var dabūt šādi:
Code: | x = x1 + y*(x2-x1)/(y2-y1) |
(uzmanīgi gadījumā, ja taisne ir horizontāla, tad nezinu kādu x koordināti tev vajag, vienādojums nedos pareizu atbildi vispār, jo dalīt ar 0 nevar) |
|
Back to top |
|
|
s1 Guest
|
Posted: Mon Jun 13, 2005 7:58 pm Post subject: |
|
paldies bubu, tu esi īsts matemātikas pavēlnieks Tev vajadzētu kļūt par šīs sadaļas moderatoru. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Mon Jun 13, 2005 9:16 pm Post subject: |
|
Moška atklāsi, ko vispār vēlējies sākumā uzzināt, a to citādi vienalga melna bilde palikusi par to, ko tu gribēji uzzināt. |
|
Back to top |
|
|
s1 Guest
|
Posted: Wed Jun 15, 2005 3:58 pm Post subject: |
|
Viss ir OK, ar tavu sniegto info es spēju novērst problēmu, velreiz paldies. |
|
Back to top |
|
|
ra001 Site Admin
Joined: 20 Jan 2003 Posts: 452 Location: Latvija
|
Posted: Sun Mar 12, 2006 12:37 pm Post subject: |
|
Sorre, ka iejaucos tik vecā topikā, bet es te pusdienu pavadīju risinot 6 klases ģeometrijas uzdevumu, ka man vajdzēja kaut kur pierakstīt.
Tātād pilns taisnes vienādojums būs šāds
Code: |
X = X1 + ((Y - Y1) * (X2 - X1)) / (Y2 - Y1)
|
Vienīgais vēl jāizdomā kā to pierakstīt, ja y nulles punkts ir augšā... |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sun Mar 12, 2006 1:17 pm Post subject: |
|
Tad bieži vien taisni pieraksta A*x + B*y + C = 0 formā. Ar šo formu ērtāk arī operēt, ja vajag noteikt visādas sadursmes ar citām taisnēm/plaknēm/objektiem.
Vai arī ar virziena vektoru (vx,vy) - pasasti normalizēts, un sākumpunktu (px, py). Tad vienādojums ir
Code: | x = px + vx*t
y = py + vy*t |
Kur t mainās no -bezgalības līdz +bezgalībai. Tad nav nekādu problēmu ar to, ka vy=0. |
|
Back to top |
|
|
Muntis
Joined: 04 Feb 2006 Posts: 23 Location: Riga
|
Posted: Thu Apr 20, 2006 4:11 pm Post subject: |
|
Bet ja gribi paziimeet taisni, bet neveelies liekus punktus reekjinaat, diskreetaa matemaatika Tev paliidzees aatraak risinaat sho probleemu:
Piemeeram:
Code: |
public void lineSimple(int x0, int y0, int x1, int y1, Color color)
{
int pix = color.getRGB();
int dx = x1 - x0;
int dy = y1 - y0;
raster.setPixel(pix, x0, y0);
if (dx != 0) {
float m = (float) dy / (float) dx;
float b = y0 - m*x0;
dx = (x1 > x0) ? 1 : -1;
while (x0 != x1) {
x0 += dx;
y0 = Math.round(m*x0 + b);
raster.setPixel(pix, x0, y0);
}
}
}
|
Shis variants ziimee tikai vienu pikseli kolonaa taa kaa ja dY > dX mainam kordinaatas vietaam lai nebuutu paartraukumi
Lasi taalaak: http://www.cs.unc.edu/~mcmillan/comp136/Lecture6/Lines.html |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Apr 20, 2006 6:02 pm Post subject: |
|
Kāda tur vēl diskrētā matemātika, ja izmanto floatus?
Ja gribēji uzzīmēt taisni tikai izmantojot veselus skaitļus aprēķinos, tad dabiski, ka jālieto Bresenham algoritms: http://en.wikipedia.org/wiki/Bresenham's_line_algorithm
Kautgan ļoti šaubos vai kādam vajag zīmēt tainses pa pikseļiem. Lielumlielais vairums grafisko API paši jau to piedavā. Ja nu vienīgi pats tādu kodē... |
|
Back to top |
|
|
S1 Indago dalībnieks
Joined: 31 Jul 2005 Posts: 219 Location: Jelgava
|
Posted: Sat Aug 12, 2006 10:53 am Post subject: |
|
emmm.... derētu zināt kā lai aprēķina C punktam y koord
|
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Sat Aug 12, 2006 11:00 am Post subject: |
|
nja.. skolā matemātiku sliki mācījāmies? :)
Ja taise nav vertikāla:
y = k*x + m
ay = k*ax + m
by = k*bx + m
ay-by = (ax-bx)*k
k = (ay-by)/(ax-bx) - var izrēķināt
ay = k*ax + m
m = ay-k*ax - var izrēķināt
cy = k*cx + m - var izrēķināt
Ja taisne ir vertikāla (ax=bx), tad cy nav iespējams izrēķināt. |
|
Back to top |
|
|
S1 Indago dalībnieks
Joined: 31 Jul 2005 Posts: 219 Location: Jelgava
|
Posted: Sun Aug 13, 2006 10:31 am Post subject: |
|
bubu wrote: | nja.. skolā matemātiku sliki mācījāmies?
|
tā vien izskatās, ka mans domāšanas aparāts nav piemērots matemātiskajām instrukcijām
paldies par aprēķiniem! |
|
Back to top |
|
|
|