Protínání přímek – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Protínání přímek – Visual Basic – Fórum – Programujte.comProtínání přímek – Visual Basic – Fórum – Programujte.com

 

montir0
Duch
21. 4. 2011   #1
-
0
-

Prosím o radu
Na výpočet průsečíku přímek, které svírají s osou X úhel menší než 45 stupňů jsem použil tento kód:

X = Abs(dStep1.Y) + Abs(dStep2.Y)

pom = Abs(Control2.Y - Control1.Y) / X
Y = dStep1.Y * pom
X = dStep1.X * pom
lLoc.Y = Y + Control1.Y
lLoc.X = X + Control2.X

Control 1 a 2 jsou body na přímkách srovnané na stejnou úroveň na ose X, dStep je posun přímek. Kód funguje perfektně.
Ovšem pokud se jedna z přímek prodlužuje více po ose Y, tak by kód měl být obdobný. Použil jsem tento:
X = Abs(dStep1.X) + Abs(dStep2.X)

pom = Abs(Control2.X - Control1.X) / X
Y = dStep1.Y * pom
X = dStep1.X * pom
lLoc.Y = Y + Control1.Y
lLoc.X = X + Control1.X

Problém je, že nefunguje.
Může mi někdo poradit? Rád zašlu i celý zdrojový kód.

Nahlásit jako SPAM
IP: 85.71.88.–
normál
montir0
Duch
21. 4. 2011   #2
-
0
-

To montir : Teda chci dodat, že samozřejmě funguje, ale špatně. Průsečík je posunutý a já nedokážu pochopit proč.

Nahlásit jako SPAM
IP: 85.71.88.–
normál
KIIV
~ Moderátor
+43
God of flame
21. 4. 2011   #3
-
0
-

rozdil vidim tady: pom = Abs(Control2.X - Control1.X) / X
u prvni verze mas Y Y a pak to X ale tady mas X X / X

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
montir0
Duch
22. 4. 2011   #4
-
0
-

To KIIV :
Ne, v tom problém není, X je v tomto případě jen rozdíl mezi bodem YY, nebo XX. Jenže v prvním případě se přímky střetávají v ostrém uhlu a v druhém v tupém. V prvním případě je step vždy menší než 1 a v druhém je jeden ze stepů roven 1.

Nahlásit jako SPAM
IP: 88.102.9.–
normál
KIIV
~ Moderátor
+43
God of flame
22. 4. 2011   #5
-
0
-

a co je tedy pom? nemam predstavivost pro nicnerikajici nazvy ...
jde o to ze kdyz mas nejaky mensi uhel tak odectes nejaky zahadny Y od jinyho podobnyho zahadnyho Y a vydelis jakymsi X ktere ziskavas z jinych Y

jakej je tedy princip algoritmu? nebo jeste lepe co je to za algoritmus? (a hlavne co mas, znas a co neznas.. )

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
montir0
Duch
22. 4. 2011   #6
-
0
-

Večer se o tom rozepíšu, teď mi dochází baterie. Kdyby jsi byl tak laskav a podíval se na tohle vlákno zítra.

Nahlásit jako SPAM
IP: 90.178.198.–
normál
montir0
Duch
23. 4. 2011   #7
-
0
-

To KIIV :
Bod 1:
Jde mi o to vy počítat společný bod dvou linek(přímek)
Bod 2:
Známé promněnné jsou X1,Y1 a X2,Y2 obou linek. Další známé jsou koeficienty prodlužování obou linek po osách X a Y. Koeficienty prodlužování jsou získávány v podstatě stejným výpočtem jeko to při prodlužování linek provádí Windows. Minimálně jeden z koeficientů je vždy 1, oba se rovnají 1 pokud se linka prodlužuje v úhlu 45°, pokud se prodlužuje po jedné z os tak je jeden roven 0.
Bod 3:
Neznámý je případný společný bod obou linek.

            ' X a Y jsou lokální promnenne

'dStep1.Y je koeficient prodluzovani Linky1 po ose Y
'dStep2.Y je koeficient prodluzovani Linky2 po ose Y
X = Abs(dStep1.Y) + Abs(dStep2.Y)
'pom je lokalni promnenna
'Control1.Y , Control1.X a Control2.Y , Control2.X jsou body na obou linkach
'srovnane na stejnou uroven na jedne z os, v tomto pripade na ose X, takze rozdilna
'je mezi linkama(body Control) pouze hodnota Y
pom = Abs(Control2.Y - Control1.Y) / X
Y = dStep1.Y * pom
X = dStep1.X * pom
'lLoc je vysledny bod protnuti obou Linek
lLoc.Y = Y + Control1.Y
lLoc.X = X + Control2.X


Nahlásit jako SPAM
IP: 90.179.88.–
normál
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý