• Remix
  • Share
  • New Entry

on 31 Oct 2021
  • 2
  • 17
  • 0
  • 0
  • 280
% set background
figure(Color='w')
hold on;
% function shortcuts
m=@(a,c)max(min(a,c),-c);
s=@vecnorm;
n=@(p)p./s(p);
% random uniformly distributed values on the unit sphere
P=n(randn(3,1e3));
% iterate gravitational force exchange
q=700;
A=jet(q);
for k=1:q
Q=P;
% distance of all points to each other
D=reshape(P,3,1,[])-P;
% calculate gravitational exchange force
U=sum(m(D./s(D).^2,10),3)/1e4-1e-3;
% add bounded, cumulative displacement and project result to unit sphere
P=n(P+n(U).*m(s(U),.01));
% plot imitating more points than actually calculated
h=scatter(P(1,:),P(2,:),m(s(P-Q).^-3/1e5,5),A(k,:),'filled');
alpha(h,.9)
end
axis off equal
Remix Tree