[PHP]Obliczanie współrzędnych, układ kartezjański ? |
[PHP]Obliczanie współrzędnych, układ kartezjański ? |
18.09.2018, 17:19:39
Post
#1
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 30.03.2014 Ostrzeżenie: (0%) |
hej
na początku dodam że jestem ZIELONY z matematyki i nigdy jej nie zrozumiem Oś Z to obracany u mnie kąt B Przykładowe dane VZOFX[1]=000.000 VZOFY[1]=421.0000 VZOFZ[1]=185.000 ( B0 ) Po obliczeniu np kąta B122 powinno wyjść coś takiego VZOFX[3]=-55.971 VZOFY[3]=421.000 VZOFZ[3]=-34.975 ( B122 ) inne przykładowe cyferki VZOFX[4]=58.275 VZOFY[4]=421.000 VZOFZ[4]=-30.985 ( B242 ) VZOFX[5]=-66.000 VZOFY[5]=421.000 VZOFZ[5]=000.000 ( B90 ) VZOFX[6]=33.000 VZOFY[6]=421.000 VZOFZ[6]=57.158 ( B330 ) VZOFX[7]=185.000 VZOFY[7]=421.000 VZOFZ[7]=000.000 ( B270 ) jak napisać algorytm na postawie "sinus cosinus" który po podaniu współrzędnych X Z wyliczy mi dowolny kąt od 0 do 359* Z formularzem i samym kodem sobie poradzę ale jak wspomniałem matematyk zemnie taki że kalkulator potrafię odpalić pozdrawiam |
|
|
18.09.2018, 17:24:28
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Ile masz lat?
|
|
|
18.09.2018, 17:28:42
Post
#3
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 30.03.2014 Ostrzeżenie: (0%) |
|
|
|
19.09.2018, 00:40:09
Post
#4
|
|
Grupa: Zarejestrowani Postów: 460 Pomógł: 49 Dołączył: 5.06.2011 Ostrzeżenie: (0%) |
Chodzi o obliczenie kąta między osią X a odcinkiem, którego pierwszy koniec umieszczony jest w punkcie x=0, y=0, a drugi koniec w punkcie x=A, y=B, gdzie A i B to zadane liczby?
To będzie arcus tangens B/A http://php.net/manual/pl/function.atan2.php
Ten post edytował trzczy 19.09.2018, 00:44:24 |
|
|
19.09.2018, 15:03:02
Post
#5
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 30.03.2014 Ostrzeżenie: (0%) |
Chodzi o obliczenie kąta między osią X a odcinkiem, którego pierwszy koniec umieszczony jest w punkcie x=0, y=0, a drugi koniec w punkcie x=A, y=B, gdzie A i B to zadane liczby? To będzie arcus tangens B/A http://php.net/manual/pl/function.atan2.php
Bardziej chodzi o to że mam np kąt 0 i podane współrzędne X i Z VZOFX[1]=000.000 VZOFY[1]=421.0000 VZOFZ[1]=185.000 ( B0 ) chciałbym wyliczyć przesunięcie współrzędnych po podaniu innego kąta np 45 lub 279 |
|
|
19.09.2018, 16:36:16
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Oś Z to obracany u mnie kąt B Przykładowe dane VZOFX[1]=000.000 VZOFY[1]=421.0000 VZOFZ[1]=185.000 ( B0 ) Po obliczeniu np kąta B122 powinno wyjść coś takiego VZOFX[3]=-55.971 VZOFY[3]=421.000 VZOFZ[3]=-34.975 ( B122 ) Ewidentnie coś jest nie tak. Jeśli dokonujesz obrotu wokół osi Z, to współrzędna Y na pewno się zmieni, a Z pozostanie bez zmian. -------------------- |
|
|
19.09.2018, 18:17:28
Post
#7
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 30.03.2014 Ostrzeżenie: (0%) |
zrobiłem chaos przepraszam, wygląda to tak
obrót wokół osi Y próbuje zrobić w ten sposób
otrzymuje: os X [180]: 148.21323761076 os Z [180]: -110.7151127757 a powinno być VZOFX[2]=000.000 VZOFZ[2]=185.000 ( B180 ) Ten post edytował snerf 19.09.2018, 18:18:30 |
|
|
19.09.2018, 18:35:11
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Jeżeli:
Cytat Przykładowe dane VZOFX[1]=000.000 VZOFY[1]=421.0000 VZOFZ[1]=185.000 ( B0 ) to przy obrocie wokół osi Y: a powinno być VZOFX[2]=000.000 VZOFZ[2]=185.000 ( B180 ) na pewno zmieni się współrzędna X i/lub Z. Tu pokazałeś, że obydwie współrzędne nie zmieniają się. Nie wiem co ze współrzędną Y. Bo jeśli nie zmienia się, to na pewno nie jest to obrót o kąt 180 stopni, a jeśli się zmienia, to nie jest to obrót wokół osi Y. Podaj jeszcze raz dla jakich danych wejściowych, obrotu wokół której osi, jakie dane wyjściowe powinieneś otrzymać. -------------------- |
|
|
19.09.2018, 18:47:09
Post
#9
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 30.03.2014 Ostrzeżenie: (0%) |
hej
X sie nie zmieni ponieważ ma 0 a Z sie nie zmienił z powodu że taki kształt ma mój model po drugiej stronie też ma punt na pozycji 185 inny przykład modelu w osi (wszystkie bazy np B122 są obliczane od bazy B0 po obróceniu i przesunięciu) VZOFX[1]=000.000 VZOFZ[1]=186.000 ( B0 ) VZOFX[2]=000.000 VZOFZ[2]=184.000 ( B180 ) VZOFX[3]=-56.819 VZOFZ[3]=-35.505 ( B122 ) VZOFX[4]=59.157 VZOFZ[4]=-31.455 ( B242 ) VZOFX[5]=-67.000 VZOFZ[5]=000.000 ( B90 ) VZOFX[6]=33.500 VZOFZ[6]=58.024 ( B330 ) VZOFX[7]=186.000 VZOFZ[7]=000.000 ( B270 ) Dodam że chce właśnie uzyskać coś takiego jak tutaj: http://www.advancedcncsolutions.com/sample...tureOffsetCalc4 |
|
|
19.09.2018, 18:58:47
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Po drugiej stronie Z powinno mieć -185 - tak jest dla standardowego układu w trzech wymiarach. Nie wiem na czym polega działanie Twojego modelu.
Jeśli tak, to równania na obrót wokół osi Y wyglądają następująco: x2=cos(kat)*x-sin(kat)*z y2=y z2=sin(kat)*x+cos(kat)*z co daje: x2=-1*0-0*185=0 y2=421 z2=0*0+(-1)*185=-185 Może Ci to w jakiś sposób pomoże. -------------------- |
|
|
19.09.2018, 19:28:15
Post
#11
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 30.03.2014 Ostrzeżenie: (0%) |
Po drugiej stronie Z powinno mieć -185 - tak jest dla standardowego układu w trzech wymiarach. Nie wiem na czym polega działanie Twojego modelu. Jeśli tak, to równania na obrót wokół osi Y wyglądają następująco: x2=cos(kat)*x-sin(kat)*z y2=y z2=sin(kat)*x+cos(kat)*z co daje: x2=-1*0-0*185=0 y2=421 z2=0*0+(-1)*185=-185 Może Ci to w jakiś sposób pomoże. dzięki za zaangażowanie
zwraca mi: os X [180]: 148.21323761076 os Z [180]: -110.7151127757 a x pownien 0 , z 185 kąt 330: os X [330]: 24.490601403009 os Z [330]: -183.37178202471 a powinien: X[6]=33.000 Z[6]=57.158 ( B330 ) Pytałeś skąd mam te dane: Są to współrzędne obrabiarki wyliczone przez nią na podstawie kąta np 0 w tym wypadku Ten post edytował snerf 19.09.2018, 19:29:03 |
|
|
19.09.2018, 19:29:47
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Wiesz, że dla funkcji sin i cos powinieneś podać wartości kątów w radianach, prawda?
-------------------- |
|
|
19.09.2018, 19:39:26
Post
#13
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 3 Dołączył: 30.03.2014 Ostrzeżenie: (0%) |
Wiesz, że dla funkcji sin i cos powinieneś podać wartości kątów w radianach, prawda? $katy = deg2rad($kat); $show_x = cos($katy)*$x-sin($katy)*$z; $show_z = sin($katy)*$x+cos($katy)*$z; Dodałem ale wyszły jeszcze większe cyrki, no nic chyba się poddaje os X [330]: 92.5 os Z [330]: 160.21469970012 |
|
|
19.09.2018, 21:45:17
Post
#14
|
|
Grupa: Zarejestrowani Postów: 460 Pomógł: 49 Dołączył: 5.06.2011 Ostrzeżenie: (0%) |
https://3v4l.org/fG1aI
Tutaj to zrobiłem. Kod jest "brzydki", bo przerabiałem kod znaleziony na internecie. Ale skupmy się na wynikach funkcji: Znajdujemy kolejno wynik dla 0, 45, 90, 135, 180 i potem od czapy 22.5 Z grubsza widać że wyniki są ok. Założeniem moim było, że znajdujemy współrzędne punktu na okręgu, tak jakby chodziła w tył wskazówka zegara. Jak te wyniki są ok, to trzeba ładniej to napisać np. zrobić jedną funkcję, a nie dwie. Ten post edytował trzczy 19.09.2018, 21:46:06 |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 15:04 |