Wpis z mikrobloga

#programowanie #matlab
Mirki, pomoże ktoś zielonce?

Mam wyrysować przestrzeń roboczą robota.
Wyznaczyłam wektory x,y,z wszystkich możliwych położeń (z jakimś tam skokiem).
I pytanie teraz, czy jest jakaś funkcja, która mi te punkty wyrysuje jako jednolitą bryłę?
Mesh odpada, bo w niej Z musi być macierzą a ja mam wektor.

Czy w ogóle zabieram się do tego od dobrej strony? Mam do dyspozycji równania na x,y,z w zależności od wartości na każdym złączu.

Tyle napisałam:
th1=linspace(th1min,th1max,25);
d2=linspace(d2min,d2max,25);
d3=linspace(d3min,d3max,25);
th4=linspace(th4min,th4max,25);

pozycje=combvec(th1,d2,d3,th4);

th1=pozycje(1,:);
d2=pozycje(2,:);
d3=pozycje(3,:);
th4=pozycje(4,:);

x=cosd(th1).*(a3 + d3) + a2*cosd(th1) - a4*sind(th4 - 90).*cosd(th1);
y=sind(th1).*(a3 + d3) + a2*sind(th1) - a4*sind(th4 - 90).*sind(th1);
z=a1 + d2 + a4*cosd(th4 - 90);
  • 21
@quatsch: Pierwsze co przychodzi do głowy to wyrysowanie tego jako punkty w przestrzeni 3d.
Do tego wystarczy plot3(x,y,z,'*b'), które bazuje na samych punktach. Ale nie daje wyniku bryły. To jest najprymitywniejsze rozwiązanie.
Niestety, te algorytmy są na szukanie bryły wypukłej(convex) a nie wklęsłej(concave).
Zobaczę czy czegoś takiego nie ma. A tutaj wykorzystujemy triangulację czyli dla każdego wierzchołka znajdujemy 3 w 2d, 4w 3d by podzielić figurę/bryłę na niezachodzące na siebie sympleksy (uogólniony trójkąt).

Nie wiem czy ręczna redukcja wierzchołków wchodzi w grę.
@quatsch: Możesz jeszcze pokombinować z tym rozwiązaniem. Powinno się dać skleić dość ładną bryłę, dzieląc theta1 na kilka przedziałów. Dla każdego oddzielna Triangulacja i oddzielna wypukła osłonka. Razem wyrysowane może będzie wyglądało jako tako?