[ zedin @ 21.05.2008. 18:16 ] @
Pozdrav,

Radim jedan program u kojem bi trebalo da se može nacrtati kontura koja se sastoji od linija i lukova. Napravio sam dio gdje mogu da dodajem elementu konture , selektujem elemente mišom , pomijeram kontrolne tačke i sl. Sada mi je potrebno da napravim da se na kontrolne tačke mogu dodavati konstrainti ili veze . Kada označim dvije tačke onda mogu da postavim vezu između tih tačaka npr. slučajevi koji mogu da nastupe su sledeći:

- tačka A ,B Veza: horizontalno poravnanje (uslov A.y = B.y )
- tačka B, C Veza: vertikalno poravnanje (uslov B.x = C.x )
- tačka C, D Veza: udaljenost X (uslov D.X = C.X + Kx )
- tačka C, D Veza: udaljenost Y (uslov D.y = C.Y + Ky )

Problem koji imam je što ne mogu da dođem do zaključka da li se nova veza može postaviti, kako se može odrediti da li se može postaviti nova veza a
da to ne bude u protivnosti sa prethodnim vezama. Kako mi se ovo čini malo komplikovanim bilo bi dosta ako mi možete reći gdje mogu naći više informacija ili ako ima neki open source projekat.

[Ovu poruku je menjao misk0 dana 22.05.2008. u 12:28 GMT+1]
[ zedin @ 24.05.2008. 15:29 ] @
Kako ne mogu da nadjem nista na netu , analiziram ovaj problem malo na papiru pa sam doso do zakljucka da zapravo treba rijesiti sistem jednacina. Ako uzmem sve veze izmedju tacaka i formiram jednacine onda treba samo ispitat saglasnost jednacina .

Npr. Ako imam kvadrat kao:

A-D
| |
| | h
| |
B-C
. b

i zelim da ga definisem sa parametrima h i b, onda bi postavio da tacke A-D i B-C imaju horizontalno poravnanje, a tačke A-B i D-C vertikalno, te jos dvije veze koje odredjuju dimenzije C.x = B.x+ b i D.y =C.y + h.

Ove veze izgledale bi kao:

A.x - B.x = 0
D.x - C.x = 0
C.x - D.x = b
--
A.y - D.y = 0
B.y - C.y = 0
D.y - C.y = h

Dodavanjem nove veze desava se da je sistem nemoguc, pa je to i uslov da li se bas ta veza moze dodati. Sad mi ostaje da rijesim kako se moze ispitati da li je sistem rjesiv. Ako imo neko kakvu ideju volio bih da čujem.
[ glorius @ 03.06.2008. 13:44 ] @
Well, koliko se ja secam diskusije sistema linearnih jednacina, to je tebi potrebno...
Znaci, nadjes determinantu ovog sistema ( za do 3x3 je lako ali, verovatno ima na netu primer koda i za sistem reda veceg od 3 )

Ako je D != 0, gde je D - determinanta znaci da imamo jedinstveno resenje ( sistem je resiv jednoznacno )
D = 0 -> sistem ima beskonacno mnogo resenja
[ zedin @ 26.06.2008. 23:27 ] @
Rijesio sam ovaj problema ali na drugi nacin , znaci potrebno je ispitati saglasnos sistema linearnih jednacina oblika

1. a - b = 0 i
2. a + b = c


Algoritam prvo pronalazi sve jednačine oblika (a -b = 0) i određuje npr. variablu a (a = b) , te je markira kao poznatu vrijednost,
u preostalim jednačinama vriši se zamjena poznatih variabli, pa ako postoji mogućnost odredi se jos koja nepoznata variabla. Postupak se ponavlja dok se ne riješe sve jednačine.

Ako je neka jednačina u suprotnosti sa ostalim desiće se u nekom koraku da su sve variable markirane kao poznate u tom slučaju se samo isputa da li je jednakost ispunjena.