współrzędne punktu na prostej względem odległości od punktu innego
Aser:

Treść:
Wzór obliczający współrzędne punktu C na prostej v
właściwości punktu C:
− znajduje się pomiędzy punktami A i B,
− odległy od punktu A o wartość x
14 cze 20:36
Aser: zapomniałem dodać, znane są tylko wartości punktu A, B, oraz odległość x
14 cze 20:38
Jack:
C= A(1−x) + xB − A,B,C rozumiem jako wektory ze współrzędnymi punktów.
14 cze 20:40
Aser: dobra teraz ide poszukać mnożenie i dodawanie wektorów

PS: masz Ci los, za szybko odpowiedziałeś i jestem w szoku
14 cze 20:42
Jack:
po prostu bierzesz współrzędną "x" każdego z punktów i masz równanie. Podobnie równanie
układasz dla współrzędnej "y".
14 cze 20:44
Aser: chwilka powoli, mam rozumieć, że tak?
Cx = Ax(1−X)+XBx
Cy = Ay(1−X)+XBy
?
14 cze 20:46
Jack:
właśnie tak.
14 cze 20:50
Aser: dziękuję bardzo, idę wypróbować
14 cze 20:51
Jack:
Testuj

... ale tylko na prostych między punktami A i B.
14 cze 20:54
Aser: zajefajnie

wreszcie mogę się poruszać po scenie ^^ (opengl) tryb FPP
taki miałem pomysł żeby w ten sposób to zrobić ale nie wiedziałem od której strony się za to
wziąść
więc musiałbym odkrywać ameryke na nowo

możesz mi jeszcze pokrótce wyjaśnić w jaki sposób to działa ta funkcja?
nie chcę tego zapamiętywać czy kopiować tylko zrozumieć najlepiej
14 cze 21:03
Aser: o mam jeszcze 1 z dwóch małych problemów
teraz wiem jak przesunąć punkt A w miejsce C o długość x
potrzebuje przesunąć punkt B o tą samą długość x i ten sam kierunek
jeśli możesz

a później w nowym temacie podam następny problem
14 cze 21:07
Jack:
ważne, żeby suma współczynników była równa 1 oraz x∊[0,1]. Wtedy nie wyskoczysz poza punkty A
i B. Skąd się to bierze? Hmm pamiętam że kiedyś na algebrze liniowej gość dokładnie
wyprowadzał skądś−tam... Teraz rozumiem to raczej intuicyjnie, że tak musi być.
14 cze 21:08
Jack:
nie rozumiem dobrze.... Chcesz przesunąć punkt B wzdłuż prostej v o długość x w kierunku jak
pokazuje strzałka na rysunku?
14 cze 21:10
Aser: dokładnie
14 cze 21:11
Jack:
Trzeba na początek znać wektor po prostej. Policzymy go w=[Bx−Ax,By−Ay]=[Δx, Δy]. Teraz
ustalimy mu długość x.
W tym celu wymnożymy go przez pewną liczbę a.
x=a
√Δx2+Δy2
Szukana liczba "a" jest dana takim wzorem jak wyżej. Jak wymnożysz wektor przez nią, otrzymasz
wektor porządnanej długości.
14 cze 21:18
Jack:
teraz przykładasz do punktu B wektor w' (ten wymnożony przez a). D=B+w' gdzie D to punkt na
którym zatrzyma się wektor w'. Jeśli weźmiesz przeciwny wyraz a, czyli −a przeleciesz w
przeciwną stronę (czyli przeciwnie do strzałki).
14 cze 21:26
Aser: co podać za 'a' (wektor czy wartość i ile)?
14 cze 21:33
Aser: rozdzielmy to na parę części:
B = w' * a a?
Dx = Bx + Wx
Dy = By + Wy
?
14 cze 21:36
Jack: wiesz co, odwrotnie przekształciłem wzór na "a"
| | x | |
powinno być a= |
|
|
| | √Δx2+Δy2 | |
"a" powinno wyjść w rachunkach. Twoje dane to A,B oraz x. W tego wyliczysz "a". "a" to
liczba przez którą będziesz mnożył wektor w, żeby nadać mu odpowiednią długość.
14 cze 21:36
Aser: o teraz do mnie dociera
14 cze 21:37
Jack:
A, B, x −dane
w=[Bx−Ax,By−Ay]=[Δx, Δy]
Dx=Bx+w
x'
Dy=By+w
y'
14 cze 21:39
Jack:
14 cze 21:39
Aser: już się martwiłem że nie zobaczę rozwiązania (net robi fikusy)

ide to zaaplikować
i powiem co się dzieje
14 cze 21:43
Jack:
14 cze 21:44
Aser: Wx' = Wx * a
Wy' = Wy * a
?
14 cze 21:50
Jack:
tak
14 cze 21:53
Aser: i wszystko zaczęło się sypać ^^ trochę posiedzę nad tym zanim funkcje będą ze sobą
współpracować,
ale trzeba się z tym przespać

dzięki za wszystko, a w miedzy czasie napisze nowy temat z kolejnym problemem i idę spać rano
zobaczę odpowiedź
14 cze 22:06
Jack:
co się sypie? Możesz wskazać wynik? Próbuj wprowadzić jakies proste dane i na boku sobie
policzyć. Ja u siebie na tablicy dostałem to, co miało wyjsc...
14 cze 22:10
Aser: chodzi oto, ze muszę to przełożyć na język Pythona i w odpowiednich miejscach, gdyż
punkt A to miejsce gdzie znajduje się kamera
punkt B to miejsce gdzie patrzy kamera

i te właśnie punkty przesuwam gdy poruszam strzałkami do przodu i do tylu

natomiast myszka obracam punkt B wokol punktu A na promieniu r
14 cze 22:20
Jack:
wow

Przyczyniam się do czegoś wielkiego widzę

Powodzenia!
14 cze 22:26
Aser: i kapa gdzies jest błąd, bo nie moge juz poruszać punktem B wokół punktu A
kod programu, znajdziesz się w nim

# stopnie na radiany
rot
zr = (math.pi * rP.tVec[1] ) /180
rot
xy = ( math.pi * rP.tVec[0] ) / 180 # rP.tVec[0]
# wzpolrzedne punktu na osi "promień".Y
Dz = r
static * math.cos( rot
zr )
r = r
static * math.sin( rot
zr )
Bx = r * math.cos( rot
xy )
By = r * math.sin( rot
xy )
if ( move
fb
old != move
fb ):
x = move
fb − move
fb
old
Cx = Ax * ( 1 − x ) + x * Bx
Cy = Ay * ( 1 − x ) + x * By
delta
x = Bx − Ax
delta
y = By − Ay
# jesli wynik 0 to skalar = 1
if math.sqrt( ( delta
x * delta
x ) + ( delta
y * delta
y ) ) == 0:
skalar = 1
else:
skalar = x / math.sqrt( ( delta
x * delta
x ) + ( delta
y * delta
y ) )
skalar
prim
x = delta
x * skalar
skalar
prim
y = delta
y * skalar
Dx = Bx + skalar
prim
x
Dy = By + skalar
prim
y
15 cze 19:38
Ada: Kamień spada swobodnie z wysokości 3 metrów. Oblicz czas ruchu kamienia. Przyśpieszenie
ziemskie g=9,81ms2
15 cze 19:43
Aser: ? Ada nie tu
15 cze 19:43
Ada: a gdzie?
15 cze 19:48
Aser: Ada: to inne temat, załóż własny
Jacek: nie oblicza Dx

y
15 cze 19:59
Ada: zakładałam pomóżcie mi proszę
15 cze 20:00
Jack:
sprawdź co wylicza w Bx / By i skalarprimx/skalarprimy
15 cze 20:17
lukas:

Witam.
Szukam w internecie po omacku rozwiązania problemu i wydaje mi się, że ten temat jest jego
rozwiązaniem, ale albo czegoś nie rozumiem, albo coś źle liczę, albo ten sposób jest
nieodpowiedni.
Rzeczywiste dane odcinka z AutoCAD'a:
długość powyższego odcinka: 44.7214 mm
A=(X10,Y40)
B=(X50,Y20)
x=20
C2=(X32.1115,Y28.9443)
Potrzebuje wzór jakim posługują się programiści AutoCAD do skracania odcinków o podaną wartość
x.
Pozdrawiam i z góry dziękują za pomoc
30 mar 08:53
lukas: Już sobie poradziłem

Tradycyjnie jak człowiek się poradzi, to zaraz znajduje rozwiązanie.
| | nx1 + mx2 | | ny1 + my2 | |
Skorzystałem ze wzoru: m= |
| , |
| |
| | m+n | | m+n | |
1. Znając współrzędne odcinka AB, trzeba policzyć długość odcinka.
2. za m podstawiamy wartość, o którą chcemy skrócić odcinek
3. za n podstawiamy długość odcinka − m
4. zamiast m+n można od razu wpisać długość odcinka.
Żeby było zabawnie, to tak jak Aser, potrzebowałem tego do napisania programu komputerowego
30 mar 23:26