Witam. Staram się napisać animację ramienia manipulatora i napotkałem na problem.
TracBarami zmieniam położenie punktów linii 1,2,3. W jaki sposób mogę uzależnić punkt 3 tak aby jego położenie zmieniało się razem ze zmianą położenia punktu 2? Chciałbym aby kąt przy punkcie 2 był stały podczas manipulowania elementem 1-2.
Z góry dziękuję za wszelką pomoc.
Hej,
Na szybko - policz odległość między punktem 1 i 3, i przy każdym obrocie sprawdzaj czy te punkty są w tej samej odległości od siebie.
Nie rozumiem w ogóle tej idei. Możesz troche rozwinąć na jakiej zasadzie to ma działać. Ok, sprawdzam sobie i wychodzi mi np. że nie są w tej samej odległości i co dalej ?
Coś w stylu (uwaga, pseudokod):
method TrackBar2.OnDrag
{
TrackBar3.Position.setX(TrackBar2.Position.getX()+jakaś tam odległość);
TrackBar3.Position.setY(TrackBar2.Position.getY());
}
Na chwile obecną mam tak:
if (trackBar4.Value > 90)
{
ramie.X2 = 459 + (trackBar4.Value - 90);
przedramie.X1 = 459 + (trackBar4.Value - 90);
ramie.Y2 = 130 - (90 - trackBar4.Value);
przedramie.Y1 = 130 - (90 - trackBar4.Value);
}
if (trackBar4.Value < 90)
{
ramie.X2 = 459 - (90 - trackBar4.Value);
przedramie.X1 = 459 - (90 - trackBar4.Value);
ramie.Y2 = 130 + (90 - trackBar4.Value);
przedramie.Y1 = 130 + (90 - trackBar4.Value);
}
ramię czyli odcinek 1-2 działa jak należy. Pierwszy punkt przedramienia porusza się razem z ramieniem. Na drugi punkt działającego pomysłu nie mam :(
Hej,
Możesz pobawić się matematyką i sprawdzać czy twoje odcinki (proste) przecinają się pod kątem prostym. Pod tym linkiem znajdziesz teorie jak coś takiego można :
wyliczyć:
http://www.gumienny.edu.pl/skrypty/f_liniowa.pdf
Idąc dalej tym tropem możesz dla pierwszego ramienia szukać prostej która przecina w danym punkcie twoją prostą pod kątem i na tej zasadzie rysować drugie ramie;)